Redis 过期删除三大策略详解
2026/6/22 22:09:26 网站建设 项目流程

Redis 过期删除三大策略详解:定时 / 惰性 / 定期淘汰原理深度对比

Redis 的内存管理,归根结底是一场时间与空间的博弈。当一个 key 设置了过期时间,它就成了一颗定时炸弹——什么时候拆?怎么拆?拆得干不干净?这三个问题,催生了三种截然不同的策略。


一、三种策略的核心逻辑

策略一句话概括谁来拆?什么时候拆?
定时删除到点就炸,绝不拖延定时器过期瞬间
惰性删除你不碰我,我就不死访问者每次读写时
定期删除保安定时巡逻,发现过期就清后台任务每隔一段时间

二、逐策略深度拆解

1. 定时删除(Active Expiration)——时间换空间

原理: 给每个设置过期时间的 key 挂一个定时器,到期立即触发删除。

优点: 干净利落,过期即删,内存利用率最高。

致命缺陷: 假设有 100 万个 key 同时过期,100 万个定时器同时触发,CPU 瞬间被打满。Redis 的核心目标是高性能,绝不能为了内存牺牲 CPU。

结论:Redis 没有采用这种策略。


2. 惰性删除(Lazy Expiration)——空间换时间

原理: key 过期了不管它,等你下次来访问时,先检查是否过期,过期就删,返回 null。

实现入口是expireIfNeeded()函数,每个读写命令执行前都会调用:

1客户端发来 GET mykey 2 → 查过期字典,发现有过期时间 3 → 当前时间 > 过期时间? 4 → 是:删除 key,返回 nil 5 → 否:正常返回值 6

优点: 零额外 CPU 开销,不扫描、不遍历,实现极其简单。

致命缺陷: 如果一个 key 过期后永远没人访问,它就永远躺在内存里。大量过期 key 堆积,就是一场静默的内存泄漏。

单独使用不可行,必须搭配定期删除兜底。


3. 定期删除(Periodic Expiration)——折中之王 ⭐

原理: Redis 的serverCron定时任务(默认每秒 10 次,即每 100ms 一次)主动出击,随机抽取过期字典中的 key 检查是否过期,过期则删。

具体执行逻辑(activeExpireCycle函数):

参数默认值含义
每次扫描的 key 数20 个随机抽取,不遍历全部
过期比例阈值25%超过则继续扫,否则换库
单次最大耗时25ms(slow 模式)超时即停,不阻塞主线程

为什么是随机抽样而不是全量遍历?

假如 Redis 存了几千万个 key,全量遍历一次要几分钟,服务直接瘫痪。随机抽 20 个,既能逐步清理,又不影响正常请求。


三、Redis 的真实组合拳:惰性 + 定期 + Fast 模式

Redis 实际采用的是惰性删除 + 定期删除的组合策略,且内置了双模式自适应调节:

特性Slow 模式(默认)Fast 模式(触发型)
执行频率每秒 10 次最高每秒 1000 次(每 1ms 一次)
单次最大执行时间25ms1ms
触发条件定时触发上一次 slow 模式中过期 key 比例 > 25%
适用场景正常业务大量 key 同时过期(如秒杀结束)
CPU 占用

组合逻辑

  • 定期删除负责"主动巡逻",清理大部分长期未访问的过期 key,控制内存整体水位。
  • 惰性删除负责"最后把关",任何被访问的 key 必定是干净的,绝不返回过期数据。

两者配合,既不让 CPU 空转,也不让内存膨胀——这才是 Redis 高性能的精髓所在。


四、三策略优劣总对比

维度定时删除惰性删除定期删除Redis 实际方案
内存效率⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
CPU 效率⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
实现复杂度
内存泄漏风险极低
是否采用✅(组合)

五、关键配置参数

参数默认值作用
hz10每秒定时任务次数,越大定期删除越频繁
active-expire-effort10控制删除强度,值越大扫描越积极
lazyfree-lazy-expirenoRedis 4.0+,是否异步删除过期 key,避免大 key 阻塞主线程
maxmemory-samples5内存淘汰时的采样数(LRU 近似算法用)

💡实战建议: 给大量 key 设置过期时间时,加上随机偏移量(如EX 3600 + rand(0,300)),避免同时过期触发 Fast 模式导致 CPU 飙升。


六、一句话总结

策略本质
定时删除用 CPU 换内存,太贵,不用
惰性删除用内存换 CPU,太懒,单用会漏
定期删除抽样巡逻,可控可调,是主力
Redis 组合拳定期巡逻 + 惰性把关 + Fast 应急 = 性能与内存的最优解

Redis 的过期删除,不是某一种策略的胜利,而是两种策略互相补短的艺术。理解这一点,才算真正读懂了 Redis 的内存管理哲学。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询