A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fix/spotify 47 lines 1.3 kB view raw
1use anyhow::Error; 2use redis::Client; 3use std::env; 4 5#[derive(Clone)] 6pub struct Cache { 7 pub client: Client, 8} 9 10impl Cache { 11 pub fn new() -> Result<Self, Error> { 12 let client = 13 redis::Client::open(env::var("REDIS_URL").unwrap_or("redis://127.0.0.1".into()))?; 14 Ok(Cache { client }) 15 } 16 17 pub fn get(&self, key: &str) -> Result<Option<String>, Error> { 18 let mut con = self.client.get_connection()?; 19 let result: Option<String> = redis::cmd("GET").arg(key).query(&mut con)?; 20 Ok(result) 21 } 22 23 pub fn set(&self, key: &str, value: &str) -> Result<(), Error> { 24 let mut con = self.client.get_connection()?; 25 redis::cmd("SET") 26 .arg(key) 27 .arg(value) 28 .query::<()>(&mut con)?; 29 Ok(()) 30 } 31 32 pub fn setex(&self, key: &str, value: &str, seconds: usize) -> Result<(), Error> { 33 let mut con = self.client.get_connection()?; 34 redis::cmd("SETEX") 35 .arg(key) 36 .arg(seconds) 37 .arg(value) 38 .query::<()>(&mut con)?; 39 Ok(()) 40 } 41 42 pub fn del(&self, key: &str) -> Result<(), Error> { 43 let mut con = self.client.get_connection()?; 44 redis::cmd("DEL").arg(key).query::<()>(&mut con)?; 45 Ok(()) 46 } 47}