redis过期key清除策略分析

  • Redis如何淘汰过期的keys: set name daniel 3600

    • 惰性删除 :

      • 概念:当一些客户端尝试访问它时,key会被发现并主动的过期

      • 放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键

      • 特点:CPU友好,但如果一个key不再使用,那么它会一直存在于内存中,造成浪费

         

    • 定时删除:

      • 概念:设置键的过期时间的同时,创建一个定时器(timer),让定时器在键的过期时间来临时,立即执行对键的删除操作

         

    • 定期删除:

      • 隔一段时间,程序就对数据库进行一次检查,删除里面的过期键,至于要删除多少过期键,

        以及要检查多少个数据库,则由算法决定。 即设置一个定时任务,比如10分钟删除一次过期的key;间隔小则占用CPU,间隔大则浪费内存

      • 例如Redis每秒处理:

      1. 测试随机的20个keys进行相关过期检测。

      2. 删除所有已经过期的keys。

      3. 如果有多于25%的keys过期,重复步奏1.

     

Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。

 

惰性删除策略是怎么实现?通过expireIfNeeded函数,当我们操作key的时候进行判断key是否过期

定期删除策略是怎么实现的?通过activeExpireCycle函数,serverCron函数执行时,activeExpireCycle函数就会被调用,规定的时间里面分多次遍历服务器的expires字典随机检查一部分key的过期时间,并删除其中的过期key

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值