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