Redis内存回收策略,你真的懂嘛?

     Reids 所有的数据都是存储在内存中的,在某些情况下需要对占用的内存空间进行回
收。内存回收主要分为两类,一类是 key 过期,一类是内存使用达到上限(max_memory)
触发内存淘汰。

一、Key过期回收策略(过期策略)

Key值过期回收策略有以下三种方案:
1、定时回收:针对每个key值新增一个定时器,定时监听key值的过期时间。 
优点:及时    缺点:CPU开销大
2、惰性回收:key值在过期以后,不主动淘汰,只有被使用时,才去判断key是否过期,过期则回收。
优点:   CPU开销较少    缺点:内存浪费严重     
3、定期回收:针对所有key值,定时扫描,清理过期key。
优点:前两种的折中,可以配置,最优策略
对于redis,则只采用惰性回收策略和定期回收两种策略。

二、内存使用达到上限回收策略(淘汰策略)

LRU,Least Recently Used:最近最少使用的Key。判断最近被使用的时间,目前最远的数据优先被淘汰。

LFU,Least Frequently Used:最不常用的Key,优先被清理。

附录:

redis设置策略 含义
volatile-lru: 根据 LRU 算法删除设置了超时属性(expire)的键,直到腾出足够内存为止。如果没有 可删除的键对象,回退到 noeviction 策略。
allkeys-lru : 根据 LRU 算法删除键,不管数据有没有设置超时属性,直到腾出足够内存为止。
volatile-lfu: 在带有过期时间的键中选择最不常用的。
allkeys-lfu : 在所有的键中选择最不常用的,不管数据有没有设置超时属性。
volatile-random : 在带有过期时间的键中随机选择。
allkeys-random : 随机删除所有键,直到腾出足够内存为止。
volatile-ttl: 根据键值对象的 ttl 属性,删除最近将要过期数据。如果没有,回退到 noeviction 策略。
noeviction : 默认策略,不会删除任何数据,拒绝所有写入操作并返回客户端错误信息(error) OOM command not allowed when used memory,此时 Redis 只响应读操作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值