28个稳定版本 (13个主要版本)
13.0.0 | 2024年2月15日 |
---|---|
12.0.0 | 2023年10月7日 |
11.7.1 | 2023年9月11日 |
11.6.0 | 2023年5月21日 |
0.2.0 | 2019年6月9日 |
#1 in #content-addressable
每月下载43,111次
在 62 个crate中使用 (16个直接使用)
170KB
3.5K SLoC
cacache
一个高性能、并发、内容可寻址的磁盘缓存,针对异步API进行优化。
示例
use cacache;
use async_attributes;
#[async_attributes::main]
async fn main() -> Result<(), cacache::Error> {
let dir = String::from("./my-cache");
// Write some data!
cacache::write(&dir, "key", b"my-async-data").await?;
// Get the data back!
let data = cacache::read(&dir, "key").await?;
assert_eq!(data, b"my-async-data");
// Clean up the data!
cacache::rm::all(&dir).await?;
}
安装
使用 cargo-edit
$cargo add cacache
最低支持的Rust版本是 1.43.0
。
文档
特性
- 一流异步支持,可以使用
async-std
或tokio
作为其运行时。同步API可用但次要。您也可以仅使用同步API并移除异步运行时依赖。 std::fs
风格API- 按键或按内容地址(shasum等)提取
- 子资源完整性 网络标准支持
- 多哈希支持 - 在单个缓存中安全地托管sha1、sha512等
- 自动内容去重
- 即使对于大型数据也支持原子内容写入
- 容错性(免受损坏、部分写入、进程竞态等影响)
- 读取和写入的一致性保证(完整数据验证)
- 无锁、高并发缓存访问
- 非常有用的上下文错误消息
- 支持大文件
- 非常快
- 任意元数据存储
- 跨平台:支持Windows和大小写不敏感的文件系统
miette
集成,提供详细、有用的错误报告。- 打败纳粹
async-std
是默认的异步运行时。若要使用 tokio
,请关闭默认功能并启用 tokio-runtime
功能,如下所示
[dependencies]
cacache = { version = "*", default-features = false, features = ["tokio-runtime", "mmap"] }
您也可以完全移除异步 API,包括移除异步运行时依赖
[dependencies]
cacache = { version = "*", default-features = false, features = ["mmap"] }
通过 "link_to" 功能提供对现有文件符号链接的实验性支持。
贡献
cacache 团队热情欢迎贡献和项目参与!如果您想贡献,有很多事情可以做!有关从报告错误到贡献全新功能的全部信息,请参阅 贡献指南。如果您愿意,请大胆加入,或者如果您对某些事情不清楚,也可以向我们提问。
本项目所有参与者和维护者都应遵循 行为准则,并且相互之间要友好。
祝您编程愉快!
MSRV
cacache 最低支持的 Rust 版本为 1.67.0
。任何对 MSRV 的更改都将被视为破坏性更改。
许可
本项目的许可协议为 Apache-2.0 许可协议。
依赖项
~7–37MB
~566K SLoC