sieve-cache

Crates.iosieve-cache
lib.rssieve-cache
version0.2.1
sourcesrc
created_at2024-01-16 23:53:44.557215
updated_at2024-07-01 20:28:17.400936
descriptionSIEVE cache replacement policy
homepagehttps://github.com/jedisct1/rust-sieve-cache
repositoryhttps://github.com/jedisct1/rust-sieve-cache
max_upload_size
id1102111
size15,923
Frank Denis (jedisct1)

documentation

README

dependency status

SIEVE cache

This is an implementation of the SIEVE cache replacement algorithm for Rust.

SIEVE is an eviction algorithm simpler than LRU that achieves state-of-the-art efficiency on skewed workloads.

This implementation exposes the same API as the clock-pro and arc-cache crates, so it can be used as a drop-in replacement for them in existing applications.

Usage example

use sieve_cache::SieveCache;

// Create a new cache with a capacity of 100000.
let mut cache: SieveCache<String, String> = SieveCache::new(100000).unwrap();

// Insert key/value pairs into the cache.
cache.insert("foo".to_string(), "foocontent".to_string());
cache.insert("bar".to_string(), "barcontent".to_string());

// Remove an entry from the cache.
cache.remove("bar");

// Retrieve a value from the cache, returning `None` or a reference to the value.
assert_eq!(cache.get("foo"), Some(&"foocontent".to_string()));

// Check if a key is in the cache.
assert_eq!(cache.contains_key("bar"), false);

// Get a mutable reference to a value in the cache.
if let Some(value) = cache.get_mut("foo") {
   *value = "newfoocontent".to_string();
}

// Return the number of cached values.
assert_eq!(cache.len(), 1);

// Return the capacity of the cache.
assert_eq!(cache.capacity(), 100000);
Commit count: 28

cargo fmt