Redis-key-value过期清理机制

今天面试被问及Redis过期后key是怎么样清理的?虽然之前也看过但是还是忘记了,今天准备手写一遍加深下印象;

Redis设置的key过期后是怎么处理的

主要有三种方式

惰性清理

当key被访问时,清理已经过期的key

定时清理

Redis配置项hz定义了serverCron任务的执行周期,默认每次清理时间为25ms,每次清理会依次遍历所有DB,从db随机取出20个key,如果过期就删除,如果其中有5个key过期,那么就继续对这个db进行清理,否则开始清理下一个db。

内存不够时清理

当执行写入命令时,如果发现内存不够,那么就会按照配置的淘汰策略清理内存,淘汰策略一般有6种,Redis4.0版本后又增加了2种,主要由分为三类
第一类 不处理
1.noeviction(默认的配置),等报错,发现内存不够时,不删除key,执行写入命令时直接返回错误信息。(Redis默认的配置就是noeviction)
第二类 从所有结果集中的key中挑选进行淘汰,
2.allkeys-random 就是从所有的key中随机挑选key,
3.allkeys-lru 就是从所有的key中挑选最近使用时间距离现在最远的key,
4.allkeys-lfu 就是从所有的key中挑选使用频率最低的key,进行淘汰。(这是Redis 4.0版本后新增的策略
第三类 从设置了过期时间的key中挑选
进行淘汰这种就是从设置了expires过期时间的结果集中选出一部分key淘汰,挑选的算法有:
5. volatile-random 从设置了过期时间的结果集中随机挑选key删除。
6. volatile-lru 从设置了过期时间的结果集中挑选上次使用时间距离现在最久的key开始删除.
7. volatile-ttl 从设置了过期时间的结果集中挑选可存活时间最短的key开始删除(也就是从哪些快要过期的key中先删除)
8. volatile-lfu 从过期时间的结果集中选择使用频率最低的key开始删除(这是Redis 4.0版本后新增的策略)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值