From 7e7ad6f35e32810f2083c0a78afe1e38c1c9f5f0 Mon Sep 17 00:00:00 2001 From: omagdy Date: Tue, 22 Jul 2025 06:59:07 +0300 Subject: feat: Implemented reading a key from rdb file --- src/resp_commands.rs | 39 ++++++++++----------------------------- 1 file changed, 10 insertions(+), 29 deletions(-) (limited to 'src/resp_commands.rs') diff --git a/src/resp_commands.rs b/src/resp_commands.rs index 9d35b1b..d61a4be 100644 --- a/src/resp_commands.rs +++ b/src/resp_commands.rs @@ -128,6 +128,7 @@ impl RedisCommands { RC::Echo(echo_string) => resp!(echo_string), RC::Get(key) => { let mut cache = cache.lock().unwrap(); + match cache.get(&key).cloned() { Some(entry) => { if entry.is_expired() { @@ -223,35 +224,15 @@ impl RedisCommands { let cache = cache.lock().unwrap(); let regex = Regex::new(&query).unwrap(); - let config = config.clone(); - - if let Some(conf) = config.as_ref() { - let dir = conf.dir.clone().unwrap(); - let dbfilename = conf.dbfilename.clone().unwrap(); - let rdb_file = RDBFile::read(dir, dbfilename).unwrap(); - - let hash_table = &rdb_file.databases.get(&0).unwrap().hash_table; - let matching_keys: Vec = hash_table - .keys() - .map(|key| str::from_utf8(key).unwrap()) - .filter_map(|key| { - regex - .is_match(key) - .then(|| RT::BulkString(key.as_bytes().to_vec())) - }) - .collect(); - RT::Array(matching_keys).to_resp_bytes() - } else { - let matching_keys: Vec = cache - .keys() - .filter_map(|key| { - regex - .is_match(key) - .then(|| RT::BulkString(key.as_bytes().to_vec())) - }) - .collect(); - RT::Array(matching_keys).to_resp_bytes() - } + let matching_keys: Vec = cache + .keys() + .filter_map(|key| { + regex + .is_match(key) + .then(|| RT::BulkString(key.as_bytes().to_vec())) + }) + .collect(); + RT::Array(matching_keys).to_resp_bytes() } RC::Invalid => todo!(), } -- cgit v1.2.3