L. Rust Projects. Write A Redis Clone....: Giordani

match self.buffer[0] as char { '*' => self.parse_array(), '+' => self.parse_simple_string(), '-' => self.parse_error(), ':' => self.parse_integer(), '$' => self.parse_bulk_string(), _ => Err(format!("Invalid RESP type: {}", self.buffer[0] as char)), } }

pub fn expire(&self, key: &str, ttl_secs: u64) -> bool let mut map = self.inner.lock().unwrap(); if let Some(value) = map.get_mut(key) let expires_at = SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap() .as_millis() as u64 + (ttl_secs * 1000); value.expires_at = Some(expires_at); true else false Giordani L. Rust Projects. Write a Redis Clone....

pub fn ttl(&self, key: &str) -> i64 let map = self.inner.lock().unwrap(); if let Some(value) = map.get(key) if let Some(expires_at) = value.expires_at let now = SystemTime::now() .duration_since(UNIX_EPOCH) .unwrap() .as_millis() as u64; if now >= expires_at return -2; ((expires_at - now) / 1000) as i64 else -1 else -2 match self

RespValue::Integer(store.ttl(&key))

pub fn del(&self, key: &str) -> bool self.inner.lock().unwrap().remove(key).is_some() Err(format!("Invalid RESP type: {}"

Scroll to Top