Redis过期数据的删除策略是什么?有哪些?

定时删除:

  • 每个设置了TTL的key中都会创建一个计时器,等到过期时间就会立即删除

  • 对内存友好,但是会占用大量的CPU资源去处理过期数据,从而影响缓存的吞吐量和响应时间

惰性删除:

  • 设置了key的过期后,不会立即删除,而是当我们访问的时候,会检查该key是否已过期,如果过期则删除,没有过期则继续使用

  • 对可以最大化地节省CPI资源,但是十分消耗内存,在极端情况下,可能会出翔大量的过期key没有被再次访问,从而一直存在内存中没有被释放

定期删除:

  • 每隔一段时间,扫描一定数量的数据库的expires字典中一定数量的随机key,删除其中已过期的数据

  • 可以通过限制删除操作执行的时长和频率来减少删除操作对CPU影响

  • slow模式,执行频率默认为10hz,每次不超过25ms

  • fast模式:执行频率不固定,两次间隔不低于2ms,每次耗时不超过1ms

相关推荐
小旺不正经5 分钟前
数据库表实现账号池管理
数据库·后端·算法
sanx1826 分钟前
一站式电竞平台解决方案:数据、直播、源码,助力业务飞速启航
前端·数据库·apache·数据库开发·时序数据库
学IT的周星星28 分钟前
《MyBatis变形记:当SQL遇上“智能管家“》
数据库·sql·mybatis
byte轻骑兵41 分钟前
突破文档型数据库迁移困境:金仓多模方案破解电子证照系统国产化难题
数据库
xdpcxq10292 小时前
EF Core框架数据库连接管理
java·jvm·数据库
期待のcode2 小时前
MyBatis框架—延迟加载与多级缓存
java·数据库·后端·缓存·mybatis
老华带你飞2 小时前
小区服务|基于Java+vue的小区服务管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·小区服务管理系统
柯南二号3 小时前
【Java后端】MyBatis 和 MyBatis-Plus (MP) 的区别
java·数据库·tomcat
C++chaofan3 小时前
游标查询在对话历史场景下的独特优势
java·前端·javascript·数据库·spring boot
小蒜学长3 小时前
springboot房地产销售管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端