2. 业界现有技术实现过程及弊端解析
时间:2022-03-09 05:15:01 | 来源:行业动态
时间:2022-03-09 05:15:01 来源:行业动态
业界普遍的做法是采用缓存替换算法是LRU,例如Linux内核page cache、 memcached等。典型的实现方式是hashtable 双链 全局锁的方式,但是这种实现存在两大问题:
所有的操作都需要加全局锁造成并发低,延时高
对于数据访问局部性差的场景命缓存失效中率低,比如顺序扫描
针对这两个问题常见的实现改进思路是:
牺牲LRU特性,即减少节点移动到head的次数, 从而降低全局锁的竞争,但是可能会造成热点数据被淘汰
LRU链表分两段或多段,基于一定的访问策略解决局部性差的场景
memecached 和page cache也是基于这两种改进思路优化的,下面分析下memecached 和page cache的具体实现细节。