用途:Moka 是面向 Rust 的快速并发内存缓存库,灵感来自 Java 的 Caffeine,通过 TinyLFU 淘汰策略提供接近最优的命中率,读操作完全并发、写操作具有高预期并发。
主要能力:提供三种缓存类型。sync::Cache 与 sync::SegmentedCache 用于同步多线程场景;future::Cache 用于 tokio、async-std、actix-rt 等异步运行时。三者共享同一套 builder API、淘汰策略与过期特性。支持 TTL(存活时间)、TTI(空闲时间)、通过 Expiry trait 实现按条目自定义过期、淘汰监听器、按权重的大小感知淘汰。
使用方式:需在 Cargo.toml 中至少启用 sync 或 future 之一,否则编译报错。例如 moka = { version = "0.12", features = ["sync"] },异步用 features = ["future"],可同时启用。可选 logging 特性用于记录淘汰监听器 panic。核心 API 包括 insert、get、contains_key、invalidate、invalidate_all、entry_count;get_with 可原子地获取或初始化并去重并发初始化,try_get_with 处理可失败初始化,optionally_get_with 处理返回 Option 的初始化,Entry API 提供 or_insert、or_insert_with、or_default 等。
适用场景:通用多线程缓存、高竞争多线程负载、异步应用中的缓存与异步初始化逻辑。
限制:资料未提供具体性能数据、收费信息或平台支持范围;unstable-debug-counters 特性有性能影响,仅建议开发使用。