1 个不稳定版本
0.1.3 | 2023年6月17日 |
---|
#255 在 缓存
13KB
215 行
CACHE APP: README.md
CACHE APP 是一个稳定的缓存 remember crate 迁移
资源 | 链接 |
---|---|
crate 版本 | |
文档 | Cargo 文档 |
[0.1.0] - 2023-06-11
Cache App 是一个简单的 Rust 缓存库,允许您缓存函数调用的结果一段时间。灵感来源于 Laravel 的缓存 remember。
remember 函数使用一个异步函数作为其参数之一,该函数必须返回一个实现了 Deserialize 和 Serialize(来自 serde)的值。如果存在缓存值,则返回该值而不执行函数,否则将执行函数并将结果存储在缓存中以供未来的查询。
[0.1.2] - 2023-06-11
在 forget()、forget_all() 和 purge() 函数中删除不必要的异步操作并返回结果。
[0.1.3] - 2023-06-11
将 Box dyn std::error::Error 更改为接受任何实现了 Display 特质的 Error 作为返回值的函数。将 Mutex 更改为 RwLock 以允许多个同时读取。
示例
use cacheapp::Cache;
use std::thread;
use std::time::Duration;
use serde::{Deserialize, Serialize};
use tokio;
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct User {
pub name: String,
pub email: String,
}
pub async fn get_user() -> Result<User, Box<dyn std::error::Error>> {
thread::sleep(Duration::from_secs(1));
Ok(User {
name: "Joel Torres".to_string(),
email: "[email protected]".to_string(),
})
}
fn main() {
// Create a new cache instance
let cache = Cache::new();
// Get the result of the function call
let fun = get_user();
let hours : u64 = 1;
let result = cache.remember("test_remember", hours, fun).await.unwrap();
println!("{:?}", result);
//forget the cache
cache.forget("test_remember");
// remember forever
let fun = get_user();
let result = cache.remember_forever("test_remember", fun).await.unwrap();
println!("{:?}", result);
//forget all cache
cache.forget_all();
println!("{:?}", cache);
//purge expired records in cache
cache.purge();
}
依赖项
~1.1–7MB
~46K SLoC