1 个不稳定版本
0.1.0 | 2023年8月7日 |
---|
#2194 在 编码
11KB
219 行代码(不含注释)
tinycache
特性
tinycache 是一个最小化文件缓存,支持二进制序列化
- 使用
get_cached_or_fetch
进行回退 - 二进制序列化
- 可选的最大存储值有效期
- 可选的跟踪功能
- 如果读取失败则无效化(用于快速迭代)
- 使用
sha1
确保 URI 安全 - 4 个依赖(serde, bincode, tracing, sha1)
特性概述
获取缓存或获取模式(读取,如果旧或不可兼容则无效化,如果不存在则获取和写入)
let cache_ref = TinyRef::new().max_age(Duration::from_secs(max_age_secs));
let expensive_value = cache_ref.get_cached_or_fetch(item_key, move || fetch_value());
读取,写入(ya)
let cache_ref = TinyRef::new();
// write does not return result, it logs tracing if there is an issue
// found that to be more useful
cache_ref.write(key.clone(), &token);
if let Some(v) = cache_ref.read::<Token>(key.clone()) {
println!("got {:?}", v);
}
底层使用 bincode 进行小文件快速读写
let bytes = bincode::serialize(value).map_err(StoreErr::ser)?;
使用 sha1 格式化项目键
fn fmt_key(k: String) -> Vec<u8> {
let mut hasher = Sha1::new();
hasher.update(k.as_bytes());
hasher.finalize().to_vec()
}
可以通过特性禁用跟踪依赖和日志记录
[features]
default = ["tracing"]
tracing = ["dep:tracing"]
依赖项
~1.3–2MB
~45K SLoC