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

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

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

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

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

一、惰性删除

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

二、定期删除

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

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

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

相关推荐

  1. Rediskey过期策略怎么实现

    2024-01-18 21:48:02       50 阅读
  2. Redis过期key删除策略

    2024-01-18 21:48:02       35 阅读
  3. Redis过期策略

    2024-01-18 21:48:02       53 阅读
  4. rediskey问题怎么解决

    2024-01-18 21:48:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 21:48:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 21:48:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 21:48:02       82 阅读
  4. Python语言-面向对象

    2024-01-18 21:48:02       91 阅读

热门阅读

  1. python 读写kafka

    2024-01-18 21:48:02       49 阅读
  2. python 常用功能积累

    2024-01-18 21:48:02       45 阅读
  3. 机器学习之协同过滤算法

    2024-01-18 21:48:02       73 阅读
  4. 机器学习在表面缺陷检测中的技术与实践

    2024-01-18 21:48:02       63 阅读
  5. MySQL-索引的介绍和使用

    2024-01-18 21:48:02       50 阅读
  6. Day6、指针的基本学习

    2024-01-18 21:48:02       46 阅读
  7. [贪心算法] 国王游戏

    2024-01-18 21:48:02       47 阅读
  8. 软件设计师考试---计算机硬件基础

    2024-01-18 21:48:02       54 阅读
  9. 服务器——配置免密登录

    2024-01-18 21:48:02       48 阅读
  10. “魔音智能去水印”隐私政策

    2024-01-18 21:48:02       54 阅读