pub struct SlruCacheConfig {
pub capacity: NonZeroUsize,
pub protected_capacity: NonZeroUsize,
pub max_size: u64,
}Expand description
Configuration for an SLRU (Segmented LRU) cache.
SLRU divides the cache into two segments: a probationary segment for new entries and a protected segment for frequently accessed entries.
§Fields
capacity: Total number of entries the cache can hold. Each entry has memory overhead (~64-128 bytes) for keys, pointers, and metadata.protected_capacity: Size of the protected segment (must be < capacity). Typically 20% of total capacity for hot items.max_size: Maximum total size in bytes for cached values. Set this based on your memory budget, not tou64::MAX. See module docs for sizing guidance.
§Sizing Recommendations
Always set meaningful values for both fields:
- In-memory cache:
max_size= memory budget for values;capacity=max_size/ average_value_size - Disk-based cache:
max_size= disk space allocation;capacity=max_size/ average_object_size
§Examples
use cache_rs::config::SlruCacheConfig;
use cache_rs::SlruCache;
use core::num::NonZeroUsize;
// 10MB cache for ~1KB values, 20% protected
let config = SlruCacheConfig {
capacity: NonZeroUsize::new(10_000).unwrap(),
protected_capacity: NonZeroUsize::new(2_000).unwrap(),
max_size: 10 * 1024 * 1024, // 10MB
};
let cache: SlruCache<String, Vec<u8>> = SlruCache::init(config, None);
// Small cache for config values, 20% protected
let config = SlruCacheConfig {
capacity: NonZeroUsize::new(500).unwrap(),
protected_capacity: NonZeroUsize::new(100).unwrap(),
max_size: 64 * 1024, // 64KB is ample for small values
};
let cache: SlruCache<&str, i32> = SlruCache::init(config, None);Fields§
§capacity: NonZeroUsizeTotal capacity of the cache (protected + probationary). Account for ~64-128 bytes overhead per entry beyond value size.
protected_capacity: NonZeroUsizeMaximum size for the protected segment (must be < capacity). Typically 20% of capacity for frequently accessed “hot” items.
max_size: u64Maximum total size in bytes for cached values.
Set based on your memory/disk budget. Avoid using u64::MAX.
Trait Implementations§
Source§impl Clone for SlruCacheConfig
impl Clone for SlruCacheConfig
Source§fn clone(&self) -> SlruCacheConfig
fn clone(&self) -> SlruCacheConfig
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SlruCacheConfig
impl Debug for SlruCacheConfig
impl Copy for SlruCacheConfig
Auto Trait Implementations§
impl Freeze for SlruCacheConfig
impl RefUnwindSafe for SlruCacheConfig
impl Send for SlruCacheConfig
impl Sync for SlruCacheConfig
impl Unpin for SlruCacheConfig
impl UnwindSafe for SlruCacheConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more