Redis中的删除策略和逐出算法

Redis中的删除策略和逐出算法

删除策略和逐出算法是两个完全不同的东西,千万不要搞混淆了。

删除策略

删除策略指的是,当key设置了过期时间,如果到了过期时间,那么采用什么策略来删除这个过期的key.

3种删除策略
  • 定时删除(当定时器计数完就将该数据删除,消耗CPU资源);
  • 惰性删除(计时器到点后不立马删除,而是下一次再使用的时候删除,相当于以空间换时间);
  • 定期删除(相当于前两个方案的折衷,以一定的周期执行删除操作,即每秒执行删除操作的CPU占有率有一个上线,在具体执行删除操作中又会采用一定的策略先选取M个key看过期率,然后再执行下一个数据库的删除策略还是采取当前数据库的全库扫描)
定时删除节约内存不分时段占用CPU资源,频度高拿时间换空间
惰性删除内存占用严重延时执行,CPU利用率高拿空间换时间
定期删除内存定期随机清理每秒话费固定的CPU资源维护内存随机抽查,重点抽查

逐出算法

逐出算法指的是,当Redis的内存不够了,又有新的key放进来,那么我们就需要从已有的key种选择某些淘汰掉以腾出空间供新key使用。

设置了过期时间的key中的逐出策略

检测易失数据(可能会过期的数据集server.db[i].expires)

  1. volatile-lru: 挑选最近最少使用的数据淘汰
  2. volatile-lfu: 挑选最近使用次数最少的数据淘汰
  3. volatile-ttl: 挑选将要过期的数据淘汰
  4. volatile-random: 在设置了过期时间的key中随机选择数据淘汰

LRU: Least Recently Used

LFU: Least Frequently Used

所有key中的逐出策略

检测全库数据(所有数据集server.db[i].dict)

  1. allkeys-lru: 挑选最近最少使用的数据淘汰
  2. allkeys-lfu: 挑选最近使用次数最少的数据淘汰
  3. allkeys-random: 在所有key中随机挑选设置了过期时间的数据淘汰
不使用逐出策略

no-eviction: 禁止驱逐数据(Redis默认策略),会引发OOM(Out OfMemory)

配置

在启动配置文件中:

maxmemory-policy volatile-lru

使用INFO命令输出监控信息,查询缓存hit和miss的次数,根据业务需求调优Redis配置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值