1 个不稳定版本
0.0.0 | 2022年8月25日 |
---|
#11 在 #lfu
21KB
504 行
cache-advisor
API
impl CacheAdvisor {
/// Create a new advisor.
pub fn new(capacity: usize) -> CacheAdvisor { .. }
/// Mark items that are accessed with a certain cost.
/// Returns the items that should be evicted and their associated costs
pub fn accessed(&mut self, id: u64, cost: usize) -> Vec<(u64, usize)> { .. }
}
实现细节
- 将访问推送到本地队列
- 当本地队列达到8个项目时,将每个访问推送到256个分片中的一个
- 每个分片都由互斥锁保护,但不会因为锁定而阻塞,通过使用
try_lock
- 如果无法获取互斥锁,将访问推送到分片的访问队列中
- 如果可以获取互斥锁,获取锁的线程还将应用队列中的访问
依赖项
~155KB