1 个稳定版本
11.0.0 | 2023年1月24日 |
---|
#216 in 缓存
48KB
943 行
cacache-sync
一个高性能、并发、内容可寻址的磁盘缓存,仅提供同步API。
注意
这是一个位于这里的 cacache
crate 的分支: https://github.com/zkat/cacache-rs,它移除了所有异步代码和依赖项,并将同步API作为主要使用方式(无需 _sync
后缀)。
动机非常简单 —— 在另一个项目中,我使用了 cacache
,我只依赖于同步API。我似乎仍在支付与异步相关依赖项的成本,因此这个分支主要面向那些肯定只使用同步API的人。我不确定这些节省如何跨其他项目进行转换,但调试构建的编译时间降低了约33%。
这个分支可能只会得到有限的支持 —— 我看不到这里需要更改同步实现的地方。如果您想看到这里的更改,您可能应该将其推送到原始项目(并考虑支持它)。
示例
use cacache_sync;
async fn main() -> Result<(), cacache_sync::Error> {
let dir = String::from("./my-cache");
// Write some data!
cacache_sync::write(&dir, "key", b"my-async-data")?;
// Get the data back!
let data = cacache_sync::read(&dir, "key")?;
assert_eq!(data, b"my-async-data");
// Clean up the data!
cacache_sync::clear(&dir)?;
}
安装
使用 cargo-edit
$cargo add cacache-sync
最低支持的Rust版本是 1.66.1
。
文档
功能
- 同步API是主要API。
std::fs
风格API- 通过键或内容地址(shasum等)提取
- 子资源完整性 网络标准支持
- 多哈希支持 - 在单个缓存中安全地托管 sha1、sha512 等
- 自动内容去重
- 即使对于大量数据,内容写入也是原子的
- 容错性(免受损坏、部分写入、进程竞态等影响)
- 读写一致性保证(完整数据验证)
- 非常实用的上下文错误信息
- 支持大文件
- 非常快
- 任意元数据存储
- 跨平台:支持Windows和大小写不敏感的文件系统
- 对抗纳粹
贡献
cacache 团队热情欢迎贡献和项目参与!如果您想贡献,有很多事情可以做!有关从报告错误到贡献全新功能的所有信息,请参阅贡献指南。如果您愿意,请不要犹豫加入我们,或者如果您有什么不清楚的地方,也可以向我们提问。
本项目中的所有参与者和维护者都应遵守行为准则,并相互友好相处。
祝您愉快地编码!
许可证
本项目采用Apache-2.0许可证。
依赖关系
~3–12MB
~161K SLoC