请描述Redis的“定期删除+惰性删除”策略失效的场景,并给出三种内存淘汰机制。
简答题
请描述Redis的“定期删除+惰性删除”策略失效的场景,并给出三种内存淘汰机制。
答案:失效场景:如果“定期删除”没删除KEY,也没即时去请求KEY,也就是说“惰性删除”也没生效,这样策略就失效。三种内存淘汰机制:1)从已设置过期时间的数据集最近最少使用的数据淘汰(volatile-lru);2)从已设置过期时间的数据集将要过期的数据淘汰(volatile-ttl);3)从数据集最近最少使用的数据淘汰(allkeys-lru)。
解析
参考答案
- 失效场景:定期删除未扫到该键,且后续未访问该键,惰性删除未触发,过期键仍占内存。
- 淘汰机制:volatile-lru、volatile-ttl、allkeys-lru。
得分点解析
- 失效场景:说明过期策略非实时,需淘汰机制兜底。
- volatile-lru:只淘汰设过期时间的键中最近最少使用者,保护永久键。
- volatile-ttl:只淘汰设过期时间的键中即将过期者,优先释放临期数据。
- allkeys-lru:所有键中淘汰最近最少使用者,适合全缓存实例。
延伸
内存达 maxmemory 后触发 maxmemory-policy;另有 noeviction、allkeys-random、volatile-random、volatile-lfu、allkeys-lfu 等。