use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CacheStats {
pub gets: u64,
pub hits: u64,
pub misses: u64,
pub evictions: u64,
pub expirations: u64,
pub current_entries: usize,
pub memory_bytes: u64,
pub max_entries: usize,
pub max_memory_bytes: u64,
}
impl CacheStats {
pub fn hit_rate(&self) -> f64 {
if self.gets == 0 {
0.0
} else {
(self.hits as f64 / self.gets as f64) * 100.0
}
}
pub fn memory_utilization(&self) -> f64 {
if self.max_memory_bytes == 0 {
0.0
} else {
(self.memory_bytes as f64 / self.max_memory_bytes as f64) * 100.0
}
}
}