redis的过期健删除策略以及内存淘汰机制

1、过期键删除策略

 redis过期的key并不会自动删除,需要redis根据设置的过期删除策略,耗费cpu的资源,执行删除逻辑。过期键删除策略有三种:定时删除、定期删除和惰性删除。

定时删除

 在设置键的过期时间时,创建一个定时器,当键过期时间快到时,立即删除key。此策略对内存友好,但是会耗费大量的cpu资源,影响吞吐量。另外,创建定时器要用到redis服务器的时间事件,而时间事件的实现方式–无序链表,查找事件的时间复杂度时O(n),并不能高效低处理大量的时间事件。
 因此,使用大量的定时器进行定时删除的策略,不实际。

定期删除

 根据定期间隔(默认100ms)随机抽取M个key,删除过期的key,如果过期的key占抽取key的25%,则重新抽取M个key,执行删除操作,重复此操作直至过期key占抽取key的比例小于25%。
 定期删除策略的难点是确定删除操作执行的时长和频率。

惰性删除

 使用到某个key的时候,检查该key是否过期,如果过期,则删除。

redis使用定期删除+惰性删除

2、内存淘汰机制

 定期删除+惰性删除并不能保证删除掉所有过期的key,随着时间的推移,内存可能会不够用,需要内存淘汰机制,释放出内存。
 内存淘汰机制有一下6种:

  1. volatile-lru:最近最少使用算法,只淘汰设定了有效期的key;
  2. allkeys-lru:最近最少使用算法,所有key都有可能按照此机制淘汰;
  3. volatile-random:随机算法,只淘汰设定了有效期的key;
  4. allkeys-random:随机算法,所有的key都可以被淘汰;
  5. volatile-ttl:淘汰剩余有效期最短的key;
  6. no-enviction:不删除任意数据。
    默认的内存策略是noeviction。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值