memcached 的LRU算法实现:
时间:2022-03-09 05:27:01 | 来源:行业动态
时间:2022-03-09 05:27:01 来源:行业动态
每个节点一把锁保护节点数据和索引
LRU链表分为hot、warm和cold三个子链表,大小比例为 32:32:34
每个子链表一把全局锁,maintainer 线程根上述比例维持链表长度时要加全局锁
节点访问时只需要加节点锁同时标记为active 并不移动解决了锁冲突问题,而且分三个子链表配合制定的访问策略解决了局部性差的场景。但是只是由maintainer 线程根据 active 表示来判断是否移动到 head, 过度的牺牲LRU特性会造成热点数据被淘汰导致命中率低。