thread-safe-cache
Features
- Thread safe
- Key/Value cache
- Expiration
- Save/Load to file
- Embedded mode
- Max size
Todo
- Client/Server mode
- LRU
- Tags
Usage
```
use threadsafecache::*;
use std::thread;
use std::thread::sleep;
use std::time::Duration;
fn main() {
let mut builder: BuilderEmbedded = BuilderEmbedded::init();
builder.maxsize(1000);
let mut cacheinit = builder.build();
let mut cache1 = cacheinit.clone();
thread::spawn(move || {
cache1.put("key1".tostring(), 1);
cache1.putexp("key2".tostring(), 2, 3000);
});
let mut cache2 = cacheinit.clone();
let t = thread::spawn(move || {
sleep(Duration::frommillis(2000));
cache2.rm("key1".tostring());
cache2.get("key2".tostring())
});
asserteq!(t.join().unwrap(),Some(2));
let mut cache3 = cacheinit.clone();
asserteq!(cache3.get("key2".tostring()), Some(2));
sleep(Duration::frommillis(2000));
asserteq!(cache3.get("key2".to_string()), None);
}
```
```
use threadsafecache::*;
fn main() {
let mut builder: BuilderEmbedded = BuilderEmbedded::init();
let mut cache = builder.build();
cache.put("a".to_string(), 1);
cache.save("test.db");
let mut builder: Builder<String, i32> = Builder::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));
}
```