7 个版本
使用旧 Rust 2015
0.1.6 | 2018年6月2日 |
---|---|
0.1.5 | 2018年3月17日 |
0.1.2 | 2017年12月6日 |
0.1.1 | 2017年11月24日 |
#219 in 缓存
38KB
490 行
persistentcache-rs
persistentcache-rs 实现了宏 cache!
和 cache_func!
以及过程宏 #[peristent_cache]
以缓存函数调用或整个函数。实现的存储是持久的,并且可以在进程之间共享。存储要么在磁盘上(FileStorage
)要么在 Redis(RedisStorage
)上。
文档和示例可以在这里找到。
示例
以下是一个使用 #[peristent_cache]
过程宏的示例
#![feature(proc_macro)]
#[macro_use]
extern crate lazy_static;
#[macro_use]
extern crate persistentcache;
extern crate persistentcache_procmacro;
use persistentcache::*;
use persistentcache::storage::{FileStorage, RedisStorage};
use persistentcache_procmacro::persistent_cache;
// Either store it in a `FileStorage`...
#[persistent_cache]
#[params(FileStorage, "test_dir")]
fn add_two_file(a: u64) -> u64 {
println!("Calculating {} + 2...", a);
a + 2
}
// ... or in a `RedisStorage`
#[persistent_cache]
#[params(RedisStorage, "redis://127.0.0.1")]
fn add_two_redis(a: u64) -> u64 {
println!("Calculating {} + 2...", a);
a + 2
}
fn main() {
// Function is called and will print "Calculating 2 + 2..." and "4"
println!("{}", add_two_file(2));
// Value will be cached from Redis, will only print "4"
println!("{}", add_two_file(2));
// Function is called and will print "Calculating 3 + 2..." and "5"
println!("{}", add_two_redis(3));
// Value will be cached from Redis, will only print "5"
println!("{}", add_two_redis(3));
}
这将打印
Calculating 2 + 2...
4
4
Calculating 3 + 2...
5
5
历史记录
这个 crate 受 owls-cache 启发,其主要目标是自学 Rust。在开发过程中,我发现已经存在类似的 crate:cached-rs。我从那里借鉴了一些想法。我建议你也看看 cached-rs crate。不幸的是,它缺少“持久”部分,并且缓存无法在进程/线程之间共享,但它应该很容易扩展。此外,出色的 accel 也非常有帮助。我为 persistentcache_procmacro
crate 不加掩饰地复制了其中的部分。
许可证
根据您的选择,许可协议为
- Apache 许可证版本 2.0(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证定义,应作为上述双重许可,不附加任何其他条款或条件。
依赖项
~11MB
~248K SLoC