#cache #hash-map #ttl #tti

endorphin

Key-Value based in-memory cache library which supports Custom Expiration Policies

2 releases

0.1.9 Jan 7, 2022
0.1.8 Jan 4, 2022
0.1.7 Dec 30, 2021

#228 in Caching

Download history 3/week @ 2024-01-08 2/week @ 2024-02-19 21/week @ 2024-02-26 5/week @ 2024-03-04 12/week @ 2024-03-11 170/week @ 2024-04-01

183 downloads per month

Custom license

98KB
2K SLoC

Endorphin

Key-Value based in-memory cache library which supports Custom Expiration Policies with standard HashMap, HashSet interface.

Example

use std::thread::sleep;
use std::time::Duration;

use endorphin::policy::TTLPolicy;
use endorphin::HashMap;

fn main() {
    let mut cache = HashMap::new(TTLPolicy::new());

    cache.insert("Still", "Alive", Duration::from_secs(3));
    cache.insert("Gonna", "Die", Duration::from_secs(1));

    sleep(Duration::from_secs(1));

    assert_eq!(cache.get(&"Still"), Some(&"Alive"));
    assert_eq!(cache.get(&"Gonna"), None);
}

Currently, we are providing four pre-defined policies.

  • LazyFixedTTLPolicy uses Lazy Expiration as other cache crates do, it expires items when you access entry after its TTL.
  • TTLPolicy uses Active Expiration which expires even you don't access to expired entries.
  • TTIPolicy uses Active Expiration which expires even you don't access to expired entries.
  • MixedPolicy is mixed policy of TTL and TTI

Dependencies

~2MB
~34K SLoC