当前位置: 首页 > news >正文

Redis 过期删除三大策略详解

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 的内存管理哲学。

http://www.jsqmd.com/news/1063880/

相关文章:

  • 109、PCIE压力测试与稳定性:从一次深夜宕机说起
  • Gemini 3.1 Pro多模态实测:分辨率、语义密度与上下文带宽的工程化验证
  • 极简设计的工程化:从设计系统到组件库的精准映射
  • 2026杭州拱墅区民间借贷律师推荐:借款纠纷维权指南与债务追偿实务解析 - 边虞技术
  • 2026天津漏水检测维修:不砸砖不破坏,精准查漏正规公司推荐 - 防水资讯
  • 2026年 附近真空泵检修厂推荐榜:专业维修团队与高效服务口碑之选 - 企业推荐官【官方】
  • 2026成都旧房改造设计工作室推荐TOP5:擅长老房翻新的本土全案机构 - 资讯快报
  • 2026年 螺杆真空泵维修服务推荐榜:专业维保/故障排查/进口国产品牌深度对比 - 企业推荐官【官方】
  • Django+React在Ubuntu 18.04部署客户数据管理系统
  • 固定响应与生成式AI在CSP教学中的效果对比与实践
  • 沈阳装修公司谁更可靠?10项评判标准整理 - 资讯快报
  • CI/CD集成:配置GitLab CI自动构建与签名(60)
  • ThinkPHP漏洞扫描与利用工具ThinkphpGUI实战解析
  • 3分钟解放双手:AutoUnipus智能刷课工具全面指南
  • Packer+Terraform 自动化部署 HashiCorp Vault 安全实践
  • MiGPT深度解析:如何让你的小爱音箱从“人工智障“变身“智能管家“
  • 算法竞赛:深入理解哈希表与 C++ unordered 容器底层的秘密
  • 亚洲EMBA客观测评:科学选型标准与优质项目解析 - 品牌2026推荐
  • 2026年移动售货亭厂家推荐榜单:景区、公园、小区、夜市、校园、商业街/不锈钢/彩钢/雕花板/真石漆售货亭品牌精选手册 - 企业推荐官【官方】
  • 2026年 三轴机加工实力公司推荐榜:精密制造与高效交付的优选方案深度解析 - 企业推荐官【官方】
  • 2026 年东京 Sakana AI 发布 Fugu:多模型协作或成 AI 新前沿,挑战单一模型霸权
  • 九江渗漏维修靠谱机构盘点 2026、全屋防水堵漏正规企业实力排名一览 - 宅安选房屋修缮
  • OpenCore Legacy Patcher完整教程:四步解决老Mac显卡兼容性与系统升级问题
  • 2026年西安靠谱装修公司盘点 覆盖新房整装、老房翻新与别墅全案 - 信息热点
  • 人脉圈广的优质EMBA项目2026理性测评指南 - 品牌2026推荐
  • 【Springboot毕设全套源码+文档】基于Java+springboot图书销售系统(丰富项目+远程调试+讲解+定制)
  • 襄阳渗漏维修靠谱机构盘点 2026、全屋防水堵漏正规企业实力排名一览 - 宅安选房屋修缮
  • 2026Q3成都流水线厂家推荐成都输送设备流水线公司、成都自动化生产线厂家权威榜单盘点深度测评 - 品牌优企推荐
  • 2026年6月江诗丹顿官方售后服务热线与全维度线下网点地址售后服务体系详解 - 资讯快报
  • 2026年三亚海棠湾回收名酒靠谱商家推荐:全维度实力解析 - 资讯快报