2个版本
| 0.5.1 | 2024年4月29日 |
|---|---|
| 0.5.0 | 2024年4月29日 |
#89 in 压缩
80KB
2K SLoC
bincache
概述
- 简单的API
- 灵活的缓存大小、限制和驱逐
- 针对不同用例的多重缓存策略
- 支持缓存压缩
- 尽力缓存恢复
缓存策略
Bincache使用策略模式以允许不同的缓存策略
- 内存缓存
- 磁盘后缓存
- 混合缓存(内存+磁盘后)
- 通过
CacheStrategy实现自定义策略
压缩算法
Bincache支持各种压缩算法
- Gzip(功能:
comp_gzip) - Brotli(功能:
comp_brotli) - Zstandard(功能:
comp_zstd) - 通过
CompressionStrategy实现自定义算法
异步运行时
Bincache支持多个异步运行时
- Futures兼容(默认)
- Tokio 1.x(功能:
rt_tokio_1) - Async-Std 1.x(功能:
rt_async-std_1)
用法
-
将
bincache添加到您的项目cargo add bincache # use blocking I/O cargo add bincache --features rt_tokio_1 # enable tokio 1.x support cargo add bincache --features rt_async-std_1 # enable async-std 1.x support -
使用您首选的策略创建一个
Cache实例#[tokio::main(flavor = "current_thread")] async fn main() -> Result<(), Box<dyn std::error::Error>> { let mut cache = bincache::MemoryCacheBuilder::default().build().await?; // Put a key-value pair into the cache cache.put(&"foo", b"foo".to_vec()).await?; // Read the value back out let foo = cache.get(&"foo").await?; // Make sure it's the same assert_eq!(foo, b"foo".as_slice()); Ok(()) } -
就这些!
库功能
blocking- 启用阻塞stdlib I/Ort_tokio_1- 启用tokio 1.x支持rt_async-std_1- 启用async-std 1.x支持comp_zstd- 启用zstd压缩支持comp_gzip- 启用gzip压缩支持comp_brotli- 启用brotli压缩支持
默认情况下,我们启用了一个“软”的
implicit-blocking功能,它只在没有启用其他运行时功能时使用阻塞I/O。您可以通过启用
blocking功能来显式选择阻塞I/O,这将禁止使用rt_tokio_1和rt_async-std_1。
依赖项
~0.6–16MB
~186K SLoC