缓存——LRU与LFU优劣(简介)
LRU(最近最久未使用)
适用于:局部突发流量场景,实现简单
缺点:
对短发周期性(短发冷数据)的数据没有抵抗力,容易缓存污染。比如某些缓存长期稳定地被查询,但是突发的数据访问会导致这些缓存被移除,而突发数据未来不再使用,这就造成缓存污染。
改进的算法有LRU-K、TwoQueues
LFU(最近很少使用)
一个数据最近使用次数少,则可能被替换。
缺点:
- 额外的访问频率记录、访问频率更新的开销。
- 局部突发流量场景造成污染。前期常访问的缓存被替换掉,而突发的数据长期保存在缓存中不被替换,而它未来不会被访问却一直占据着缓存。
Redis 过期策略和内存淘汰策略
过期策略:惰性删除、定期删除
内存淘汰策略则有8种:no-eviction,allkeys-lru,allkeys-lfu,allkeys-random,volatile-lru,volatile-lfu,volatile-ttl,volatile-random
区别
| 触发时机 | 影响的key | |
|---|---|---|
| 过期策略 | 访问key、正常运行时触发 | 设置了过期时间的key |
| 内存淘汰策略 | 内存达到maxmemory时触发 | 设置了过期时间或者所有的key |

浙公网安备 33010602011771号