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

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

这是一道经典的Redis面试题,一个Redis中可能存在很多很多的key,这些key中可能有很大一部分都有过期时间,此时Redis服务器咋知道哪些key已经过期,哪些还没过期呢?

如果直接遍历所有的key,这显然是行不通的,效率非常低!!

Redis整体的策略是定期删除和惰性删除相结合。

举个栗子:假如我去小卖铺买东西,付款的时候,发现东西过期了。就告知老板,于是老板下架此产品。消费者发现过期了,才去下架,这就叫惰性删除。小卖铺老板主动定期抽取一部分商品,进行筛查,这就叫定期删除

一、惰性删除

假设这个key已经到了过期时间,但是暂时还没删它,key还存在。紧接着,后面的一次访问,正好用到了这个key,于是这次访问就会让Redis服务器触发删除key的操作,同时再返回一个nil。

二、定期删除

每次抽取一部分验证过期时间,保证这个抽取检查的过程,足够快。

为啥这里对于定期删除的时间,有明确的要求呢?因为Redis是单线程的程序,主要的任务就是处理每个命令的任务,如果扫描过期的时间过长,就可能导致正常处理请求命令就被阻塞了。

注意:虽然有了上述两种策略相结合,整体效果一般。仍然可能会有很多过期的key被残留了,没有被及时删除。Redis为了对上述进行补充,还提供了一系列的内存淘汰策略~

相关文章:

  • 广和通AI解决方案“智”赋室外机器人迈向新天地!
  • 大数据StarRocks(八):集群扩缩容
  • Unity之四元数
  • C++系统笔记教程----vscode远程连接ssh
  • TCP的三次握手,四次挥手
  • vue列表飞入效果
  • HTTP 状态码
  • apache seatunnel web 安装部署
  • 面试经典150题(88-89)
  • 关于 mysql数据库应用程序登录卡顿无响应崩溃 的解决方法
  • 什么是设计模式(第7章笔记)
  • JUnit 5 单元测试框架
  • 服务器运维小技巧(一)——如何进行远程协助
  • openssl3.2 - 官方demo学习 - smime - smsign2.c
  • 安全帽/反光衣检测AI边缘计算智能分析网关V4如何修改IP地址?
  • Docker(一)简介和基本概念
  • 【性能调优】local模式下flink处理离线任务能力分析
  • 【Leetcode】277.搜寻名人
  • 【数据结构】二叉树(遍历,递归)
  • 【LeetCode】206. 反转链表
  • 商务部新闻发言人就暂停17家美国实体不可靠实体清单措施答记者问
  • 广东省原省长卢瑞华逝世,享年88岁
  • 从600名外到跻身大满贯,孙发京:走过的路成就了现在的我
  • 飙升至熔断,巴基斯坦股市两大股指收盘涨逾9%
  • 中美瑞士会谈后中国会否取消矿产出口许可要求?外交部回应
  • 农行深圳市分行原副行长王国彪涉嫌严重违纪违法被查