#线程安全 #缓存 #键/值 #内存 #过期 #文件 #

已删除 thread-safe-cache

线程安全内存键值缓存

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 #过期

Download history 2/week @ 2024-03-14 1/week @ 2024-03-21 2/week @ 2024-03-28 9/week @ 2024-04-04 181/week @ 2024-04-11

每月下载量 53 次

MIT 许可证

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