#cache #lock-free #lfu

bin+lib lathe

抗扫描并发缓存淘汰管理器

1 个不稳定版本

0.0.0 2022年8月25日

#11#lfu

GPL-3.0 许可证

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