pub struct LocalCache { /* private fields */ }Expand description
本地内存缓存(HashMap + RwLock + TTL + 统计 + 后台清理)
Implementations§
Source§impl LocalCache
impl LocalCache
Sourcepub fn new(max_capacity: u64, default_ttl_secs: u64) -> Self
pub fn new(max_capacity: u64, default_ttl_secs: u64) -> Self
创建本地内存缓存
max_capacity: 超过此容量后按 LRU 策略淘汰default_ttl_secs: 默认过期秒数(0 = 永不过期)
pub fn with_cleanup_interval(self, interval_secs: u64) -> Self
Sourcepub fn stats(&self) -> CacheStats
pub fn stats(&self) -> CacheStats
获取缓存统计快照
Sourcepub fn cleanup_expired(&self) -> u64
pub fn cleanup_expired(&self) -> u64
手动清理所有过期条目,返回清理数
Sourcepub fn start_background_cleanup(&self)
pub fn start_background_cleanup(&self)
启动后台过期清理任务(每 interval_secs 秒执行一次)
Trait Implementations§
Source§impl Cache for LocalCache
impl Cache for LocalCache
Source§fn get<'life0, 'life1, 'async_trait, T>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<T>>> + Send + 'async_trait>>where
T: 'async_trait + DeserializeOwned + Send,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait, T>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<T>>> + Send + 'async_trait>>where
T: 'async_trait + DeserializeOwned + Send,
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
读取缓存值,返回
Ok(None) 表示 key 不存在或已过期Source§fn set<'life0, 'life1, 'life2, 'async_trait, T>(
&'life0 self,
key: &'life1 str,
value: &'life2 T,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
fn set<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 self, key: &'life1 str, value: &'life2 T, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
设置缓存(永不过期),值通过 serde_json 序列化
Source§fn set_ex<'life0, 'life1, 'life2, 'async_trait, T>(
&'life0 self,
key: &'life1 str,
value: &'life2 T,
ttl_secs: u64,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
fn set_ex<'life0, 'life1, 'life2, 'async_trait, T>( &'life0 self, key: &'life1 str, value: &'life2 T, ttl_secs: u64, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
设置缓存(指定过期秒数),到期后自动不可见
Source§fn del<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn del<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
删除单个 key(不存在不报错)
Source§fn exists<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn exists<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
检查 key 是否存在且未过期
Source§fn incr<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
delta: i64,
) -> Pin<Box<dyn Future<Output = Result<i64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn incr<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
delta: i64,
) -> Pin<Box<dyn Future<Output = Result<i64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
计数器递增(key 不存在则从 0 开始),返回递增后的值
Source§fn keys<'life0, 'life1, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn keys<'life0, 'life1, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
获取匹配模式(glob:
*/?)的所有 keySource§fn delete_pattern<'life0, 'life1, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_pattern<'life0, 'life1, 'async_trait>(
&'life0 self,
pattern: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
删除匹配模式的所有 key,返回删除数
Source§fn stats(&self) -> CacheStats
fn stats(&self) -> CacheStats
缓存统计信息(内存缓存支持,Redis 返回全零)
Source§impl Clone for LocalCache
impl Clone for LocalCache
Source§fn clone(&self) -> LocalCache
fn clone(&self) -> LocalCache
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for LocalCache
impl !RefUnwindSafe for LocalCache
impl Send for LocalCache
impl Sync for LocalCache
impl Unpin for LocalCache
impl UnsafeUnpin for LocalCache
impl !UnwindSafe for LocalCache
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