use tiered_cache::{CacheConfig, TierConfig, TieredCache};
const MB: usize = 1024 * 1024;
fn main() {
let config = CacheConfig {
tiers: vec![
TierConfig {
total_capacity: 200 * MB,
size_range: (0, 64 * 1024), },
TierConfig {
total_capacity: 300 * MB,
size_range: (64 * 1024, MB), },
TierConfig {
total_capacity: 500 * MB,
size_range: (MB, 10 * MB), },
],
update_channel_size: None,
};
let cache = TieredCache::<Vec<u8>, Vec<u8>>::new(config);
let key = b"example".to_vec();
let value = vec![0u8; 500 * 1024];
cache.put(key.clone(), value);
if let Some(retrieved) = cache.get(&key) {
println!("Retrieved value of size: {} bytes", retrieved.len());
}
let stats = cache.stats();
println!("Cache statistics:");
println!("Total items: {}", stats.total_items);
println!("Total size: {} MB", stats.total_size / MB);
for (i, tier) in stats.tier_stats.iter().enumerate() {
println!("\nTier {}:", i);
println!(" Items: {}", tier.items);
println!(" Size: {} MB", tier.size / MB);
println!(" Capacity: {} MB", tier.capacity / MB);
}
}