#cache #timed #session

timed_cache

实现一个缓存库,如果访问后经过一定时间,则会重新生成值

2个版本

使用旧的Rust 2015

0.1.1 2018年9月13日
0.1.0 2018年9月13日

缓存分类下排名#273

MIT许可协议

9KB
114

Timed Cache

该库是一个缓存实现,通过键存储其内容,以及值写入缓存后有效的时长。

如果用户尝试从TimedCache中获取值时值缺失,或者值的存储Duration已过期,则将使用指定的函数重新生成该值。

示例

    let cache = TimedCache::with_time_to_keep(Duration::from_seconds(60));
    cache.get(&"key".to_owned(), || some_mutexed_service.lock().unwrap().call());

有关信息,请参阅测试和文档。

贡献

我很乐意得到帮助来改进和扩展这个库。请留下问题或提交一个pull请求!


lib.rs:

示例

以下示例显然过于简单,但可以了解如何使用此库。在实际应用中,生成函数可能需要调用网络服务来获取会话密钥。

   extern crate timed_cache;

   use timed_cache::TimedCache;

   use std::time::Duration;
   use std::sync::Mutex;

   struct TestService(usize);

   impl TestService {
       fn next(&mut self) -> usize {
           let n = self.0;
           self.0 += 1;
           n
       }
   }

   let time_to_keep = Duration::from_millis(1);
   let mut cache = TimedCache::<String, usize>::with_time_to_keep(time_to_keep);

   let service = Mutex::new(TestService(0));

   let generate_value = || service.lock().unwrap().next();

   (0..1000).for_each(|_| {
       // this generator method will
       let value = cache.get(&"value".to_owned(), generate_value);
       println!("{}", value);
   });

无运行时依赖