Redis过期键删除策略

Redis有三种过期键的删除策略。

  • 定时删除:在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即执行对键的删除策略。
  • 惰性删除:放任键过期不管,但每次从键空间获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;否则,返回该键。
  • 定期删除:每隔一段时间,程序就对数据库进行一次检查,删除里面过期的键。删除数量以及间隔周期由算法决定。

三种策略中,第一种和第三种是主动删除,第二种是被动删除。

定时删除

定时删除策略对内存是友好的,但是对CPU是不友好的。 因为一方面,定时删除可以保证过期的键尽快被删除,释放占用的内存;而另一方面,在过期键较多的情况下,删除操作会占用大量CPU时间,在内存不紧张而CPU紧张的情况下, 将CPU时间用在删除和当前任务无关的键上, 会对服务器的响应时间和吞吐量造成较大的影响。

惰性删除

惰性删除策略对CPU是友好的,但是对内存是不友好的。 因为这种策略不会在删除其他无关的过期键上花费任何CPU时间,但是如果数据库中有非常多的过期键,而这些键又没有被访问到的话, 它们也许永远不会被删除,甚至可以把这种情况看成内存泄漏------无用的垃圾数据占用了大量的内存。

定期删除

定期删除策略是对前两种删除策略的一种整合和折中。

  • 定期删除策略通过每隔一段时间执行一次删除过期键的操作,并通过限制删除键操作执行的时长和频率来减少删除操作对CPU时间的影响。
  • 通过定期删除过期键,有效减少了因为过期键而带来的内存浪费。

定期删除的难点是确定删除操作执行的时长和频率。

最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB

相关推荐
奔跑吧邓邓子23 分钟前
【Java实战㊱】Spring Boot邂逅Redis:缓存加速的奇妙之旅
java·spring boot·redis·缓存·实战
一只拉古26 分钟前
C# 代码审查面试准备:实用示例与技巧
后端·面试·架构
失散1332 分钟前
分布式专题——4 大厂生产级Redis高并发分布式锁实战
java·redis·分布式·缓存·架构
沐怡旸33 分钟前
【算法--链表】138.随机链表的复制--通俗讲解
算法·面试
yongche_shi43 分钟前
第二篇:Python“装包”与“拆包”的艺术:可迭代对象、迭代器、生成器
开发语言·python·面试·面试宝典·生成器·拆包·装包
xhbh6661 小时前
MySQL数据导出避坑指南:如何选择正确的工具并设计安全的备份策略?
数据库·mysql·oracle·程序员·mysql导出数据库
幻奏岚音1 小时前
《数据库系统概论》第一章 初识数据库
数据库·算法·oracle
AAA修煤气灶刘哥1 小时前
别懵!从单机锁到 Redisson,分布式锁的坑我全帮你填了
java·redis·spring cloud
蜗牛~turbo1 小时前
金蝶云星空 调价表取历史价格
java·数据库·sql·c#·database
jc06201 小时前
4.1-中间件之Redis
数据库·redis·中间件