3 releases
0.1.2 | Jul 27, 2024 |
---|---|
0.1.1 | Jul 26, 2024 |
0.1.0 | Jul 26, 2024 |
#1363 in Database interfaces
67 downloads per month
17KB
372 lines
rdcache
Rust version of rockscache
Features
- Execute an async task only once for the same key at the same time and diffrent application.
- Use MessagePack to cache data.
Example
use std::time::Duration;
use rdcache::{Client, Options};
use rustis::client::Client as RedisClient;
#[tokio::main]
async fn main() {
let rdb = RedisClient::connect("127.0.0.1:6379").await.unwrap();
let client = Client::new(rdb, Options::default());
let key = "key";
let r = client
.fetch(key, Duration::from_secs(600), || async {
println!("Fetching data from the database");
Ok(Some("data".to_string()))
})
.await;
println!("{:?}", r);
client.tag_as_deleted(key).await.unwrap();
let r = client
.fetch(key, Duration::from_secs(600), || async {
println!("Fetching data from the database");
Ok(Some("data2".to_string()))
})
.await;
println!("{:?}", r);
}
The output will be like:
Fetching data from the database
Ok(Some("data"))
Fetching data from the database
Ok(Some("data2"))
Dependencies
~10–21MB
~260K SLoC