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

(Redis)过期删除策略

1. 背景

Redis 支持为 Key 设置过期时间(TTL),让数据在一定时间后自动失效。
例如:

SET session:1001 "userA" EX 60   # 60 秒后过期

但是问题来了:Key 到期后,Redis 什么时候、如何删除它?
如果删除不及时,会造成内存浪费;如果删除太频繁,又会占用 CPU。
因此,Redis 设计了 三种过期删除策略


2. 三种过期删除策略

(1)定时删除

原理:为每个设置过期时间的 Key 创建一个定时器,到期后立即删除。

  • ✅ 优点:能及时释放内存,过期数据不会长期存在。

  • ❌ 缺点:每个 Key 都要维护定时器,开销非常大;如果过期 Key 很多,会严重影响 Redis 性能。

结论:不适合 Redis 这种高性能场景。


(2)惰性删除

原理:当客户端访问某个 Key 时,Redis 才会检查它是否过期。

  • 如果过期 → 删除,不返回数据;

  • 如果没过期 → 正常返回。

  • ✅ 优点:只在访问时才检查,几乎没有额外开销,对 CPU 友好。

  • ❌ 缺点:如果某些 Key 过期后从未被访问,就会一直占用内存,导致空间浪费。


(3)定期删除

原理:Redis 会定期(默认每 100ms)随机抽取一批设置了过期时间的 Key,检查是否过期,如果过期就删除。

  • ✅ 优点:相比定时删除更省 CPU,相比惰性删除又能回收一部分无访问的过期 Key。

  • ❌ 缺点:抽样删除,可能存在一部分过期数据滞留内存一段时间。


3. Redis 实际采用的策略

Redis 没有单独使用其中一种,而是结合了 惰性删除 + 定期删除

  • 惰性删除:保证过期数据在访问时一定会被清理。

  • 定期删除:保证即使没人访问,过期数据也能被逐步清理掉。

👉 这样做能 兼顾性能和内存,避免 CPU 或内存被某一方面拖垮。


4. 总结

策略删除时机优点缺点是否被 Redis 采用
定时删除过期时间一到立刻删除内存释放及时CPU 开销大
惰性删除访问时检查是否过期对 CPU 友好内存可能浪费
定期删除每隔一段时间随机抽查内存与性能平衡删除不够精准
http://www.dtcms.com/a/348567.html

相关文章:

  • 半年网络安全转型学习计划表(每天3小时)
  • Highcharts推出OEM许可证中国区正式上线:赋能企业级嵌入式数据可视化解决方案
  • 如何使用 DeepSeek 助力工作​。​
  • 数据可视化——matplotlib库
  • EPWpy教程:一个脚本完成能带、声子、电声耦合、弛豫时间计算
  • [自用笔记]上传本地项目至github
  • 联想win11笔记本音频失效,显示差号(x)
  • 【嵌入式DIY实例-ESP32篇】-物联网电能表
  • 硬件开发_基于物联网的宠物猫饲养系统
  • 中介者模式与几个C++应用实例
  • 【高等数学】第十章 重积分——第二节 二重积分的计算法
  • 交通拥堵识别准确率↑22.5%!陌讯多模态时序融合算法在智慧交通的落地优化
  • Spring AOP面向切面的底层原理、注解、切入点表达式、连接点获取方法名参数值等
  • C++STL底层原理:探秘标准模板库的内部机制
  • 从全栈开发到微服务架构:一次真实的Java面试实录
  • 【机器学习】9 Generalized linear models and the exponential family
  • 大模型面试题剖析:微调与 RAG 技术的选用逻辑
  • 【Docker项目实战】使用Docker部署Hibiscus.txt简单日记工具
  • VITE BALABALA require balabla not supported
  • Linux:shell命令
  • 【数据结构】-4-顺序表(上)
  • AI Agent与生成式AI双驱动:AI如何重塑商业格局并创造千亿级增量价值
  • 一套完整的Linux下usb设备驱动包括字符设备驱动吗
  • Docker 安装LDAP(企业级统一账号配置系统)
  • 税务岗位能力提升培训课程推荐:专业成长与证书指南
  • 【Game】Powerful——Punch and Kick(12.3)All Star
  • KingBase数据库迁移利器:KDTS工具深度解析与实战指南
  • Https之(三)TLS双向认证
  • Linux->多线程2
  • openGauss之 无用join消除