19 个不稳定版本 (3 个破坏性更新)
0.4.10 | 2023年2月27日 |
---|---|
0.4.9 | 2023年2月27日 |
0.3.2 | 2023年2月26日 |
0.2.0 | 2023年2月25日 |
0.1.3 | 2023年2月25日 |
#24 in #过期
每月下载量 53 次
24KB
490 行
thread-safe-cache
功能
- 线程安全
- 键/值缓存
- 过期
- 保存/加载到文件
- 嵌入式模式
- 最大大小
待办事项
- 客户端/服务器模式
- LRU
- 标签
用法
use thread_safe_cache::*;
use std::thread;
use std::thread::sleep;
use std::time::Duration;
fn main() {
let mut builder: BuilderEmbedded<String, i32> = BuilderEmbedded::init();
builder.max_size(1000);
let mut cache_init = builder.build();
let mut cache1 = cache_init.clone();
thread::spawn(move || {
cache1.put("key1".to_string(), 1);
cache1.put_exp("key2".to_string(), 2, 3000);
});
let mut cache2 = cache_init.clone();
let t = thread::spawn(move || {
sleep(Duration::from_millis(2000));
cache2.rm("key1".to_string());
cache2.get("key2".to_string())
});
assert_eq!(t.join().unwrap(),Some(2));
let mut cache3 = cache_init.clone();
assert_eq!(cache3.get("key2".to_string()), Some(2));
sleep(Duration::from_millis(2000));
assert_eq!(cache3.get("key2".to_string()), None);
}
use thread_safe_cache::*;
fn main() {
let mut builder: BuilderEmbedded<String, i32> = BuilderEmbedded::init();
let mut cache = builder.build();
cache.put("a".to_string(), 1);
cache.save("test.db");
let mut builder: BuilderEmbedded<String, i32> = BuilderEmbedded::init();
builder.max_size(1000);
let mut cache_clean = builder.build();
cache_clean.load("test.db");
assert_eq!(cache_clean.get("a".to_string()), Some(1));
}
依赖
~4–11MB
~108K SLoC