Redis 数据过期后的删除策略是什么?

发布时间:2026/8/30 22:14:52
Redis 数据过期后的删除策略是什么? Redis过期键删除策略面试结构化Redis设置key过期时间key到期不会立刻删除采用惰性删除 定期删除两种策略配合另外还有内存满了触发的内存淘汰策略。1. 惰性删除逻辑key过期不会马上删掉只有当客户端去访问这个key的时候Redis才检查是否过期如果过期直接删除返回nil。优点CPU开销很小只在访问时做检查不占用额外CPU。缺点如果一个key已经过期但一直没人访问它会一直占着内存造成内存泄漏。2. 定期删除逻辑Redis后台每隔一段时间随机抽取一部分设置了过期时间的key检查是否过期过期就删掉。不是扫描全部key是随机抽样避免遍历全部key阻塞主线程。配置控制执行频率、抽样数量。优点解决惰性删除的问题把过期key逐步清理释放内存。缺点不可能把所有过期key全部清理干净依然会残留部分过期key在内存。小结惰性删除定期删除组合依然会有过期key残留在内存。当内存达到上限就触发内存淘汰策略。3. 内存淘汰策略 maxmemory‑policy当Redis内存占用达到maxmemory最大内存限制执行淘汰一共8种volatile‑lru从设置过期时间的key淘汰最近最少使用的LRUallkeys‑lru全部key淘汰最近最少使用最常用volatile‑lfu过期key中淘汰访问频次最低allkeys‑lfu全部key中淘汰访问频次最低volatile‑random在带过期的key随机删allkeys‑random所有key随机删除volatile‑ttl删除快要过期的keyTTL最小优先no‑eviction不删除任何key直接返回报错默认不是这个Redis的LRU、LFU不是严格算法是近似采样算法性能更高。面试高频追问区分过期删除惰性 定期处理已经TTL到期的key。内存淘汰内存打满才触发不管key有没有过期。总结惰性删除访问的时候才删过期key节省CPU但内存可能浪费。定期删除后台随机抽样清理过期key不能清理全部。两者结合仍有残留内存超限触发内存淘汰策略释放内存。线上一般设置maxmemory搭配allkeys‑lru。