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

Redis 的 key 的过期策略是怎么实现的

在 Redis 中,有一个 expire 命令,用来设置某个 key 的过期时间,当超过这个时间后,这个 key 就被删除了,我们也就获取不到了,但是 Redis 是如何做到对于每一个设置了过期时间的 key 都能按时删除的呢?

1、直接遍历所有的 key

每隔一段时间,Redis 就遍历一遍所有的 key,若某个 key 已经到了或已经超过的过期时间,就将其删除。

这种策略对于 Redis 中的 key 很少时是有效的,但是当 Redis 中的值变得非常多,每遍历一遍所有的 key 就会消耗较多的 CPU 资源,而且由于 Redis 是单线程的程序,若在这里消耗了太多的资源,就导致别的请求无法顺利进行,从而造成程序出现错误。

2、惰性删除

当给某个 key 设置过期时间后,虽然这个 key 已经过期了,但是 Redis 还没有将其删除,当下一次获取到这个 key 后,系统就会判断这个 key 已经到了过期时间,就会将其删除,并且返回 nil。

3、定期删除

与第一种方法类似,但是不是一次性遍历所有的 key,而是只抽取部分 key 进行过期时间的验证,这样就能保证既即时删除了过期的 key,又能保证不会消耗过多的资源。

Redis 使用的是惰性删除与定期删除相结合的策略,同时也提供了一系列的内存淘汰机制。

相关文章:

  • docker中部署Universal Media Server (UMS)
  • 云里物里电子标签落地香港伊利沙伯医院:打造无纸化诊疗新范式
  • 定时器的两种实现方式
  • AI人工智能——Matplotlib绘制各种数据可视化图表的基础方法
  • Idea 查找引用jar包依赖来源的Maven pom坐标
  • 软考高项-各年选择错题
  • Sentieon文献解读 - 使用 Sentieon ctDNA 分析管道高精度、高效地处理 UMI 数据集
  • React--函数组件和类组件
  • 打卡31天
  • Docker的网络介绍
  • linux 查看java的安装路径
  • java并发-线程池
  • gcc还会有自己的头文件呢?
  • 【信息系统项目管理师】第13章:项目资源管理 - 38个经典题目及详解
  • 使用allure生成自动化测试报告
  • systick滴答定时器us延时和毫秒延时
  • 大模型训练全攻略:从参数设置到模型优化
  • FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现
  • 滚珠丝杆的承载力是多少?
  • HarmonyOS基础组件:Button三种类型的使用
  • wordpress多站点子目录建站/个人可以做推广的平台有哪些
  • 校园文化建设网站/汕头seo全网营销
  • 建设部网站监管平台/百度网站搜索排名
  • 校园网站建设情况汇报/培训心得体会总结简短