redis缓存过期、内存淘汰机制

1、redis缓存过期机制

Redis可以通过设置一个过期时间expire来处理缓存,Redis删除过期缓存有两种方法:

  • 定期删除:Redis会随机抽查key,如果过期则删除,默认配置为1秒10次,也可以提高频率,但是频率越高,cpu压力越大
# 定期删除频率配置,表示1秒10次
hz 10
  • 惰性删除:表示当用户读取Redis缓存时,会检查key是否过期,如果过期则直接删除,这种方法会消耗大量内存去存已过期的键值对
    总结:以上两种方法优缺很明显,Redis使用的缓存过期机制是:惰性删除加上定期删除,两者配合使用

2、Redis内存淘汰机制

Redis的高性能原至于内存,不管是8个G还是16个G,都是有上限的,而当这个内存到达最大阈值(maxmemory),就不得不删除一部分不重要的缓存来腾出空间给新的数据使用,其中maxmemory可以自己设置大小。Redis中内存淘汰策略:

redis 最大内存不足时,数据清除策略,默认为"noeviction"
    
volatile-lru  -> "过期集合"中的数据采取LRU(近期最少使用)算法. 
    如果对key使用"expire"指令指定了过期时间, 那么此key将会被添加到"过期集合"中。 
    首先将已经过期的数据优先移除. 若不能满足最大内存maxMemory设置, 
    继续使用LRU算法删除设置expire但还是没有过期的key,
    如果"过期集合" 中全部移除仍不能满足内存需求,将OOM(内存不足错误).
 
 
allkeys-lru ->   对所有的数据,采用LRU(近期最少使用)算法,
 
volatile-random ->"过期集合"中的数据采取"随即选取"算法,并移除选中的K-V,直到"内存足够"为止. 
                    如果"过期集合" 中全部移除全部移除仍不能满足,将OOM(内存不足错误)
 
allkeys-random ->  对所有的数据,采取"随机选取"算法,并移除选中的K-V,直到"内存足够"为止
 
volatile-ttl ->"过期集合"中的数据采取TTL算法(最小存活时间),移除即将过期的数据.
        
noeviction ->     不做任何干扰操作,直接返回OOM异常

## 相关配置
maxmemory 124000000 # 字节
maxmemory-policy noeviction
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值