Redis 不会在 Key 一到过期时间就立刻删掉,而是结合惰性删除和定期删除来平衡实时性与 CPU 开销。
惰性删除是什么
当客户端再次访问某个 Key 时,Redis 先检查它是否已经过期。过期了就顺手删掉并返回不存在。这种方式省 CPU,但如果一个过期 Key 长时间没人访问,它会继续占内存。
定期删除是什么
Redis 会周期性地随机抽查设置了过期时间的 Key,把其中已过期的清掉。这样可以逐步回收内存,但不会为了追求绝对实时而一直高频扫描。
为什么还要关注淘汰策略
如果内存本身就紧张,仅靠过期删除还不够,Redis 还可能触发内存淘汰策略,比如按最近最少使用或设置 TTL 的规则回收数据。
结论
Redis 的过期不是“定时器逐个删除”,而是用惰性检查加定期抽样,在性能和内存回收之间做折中。
正文完




