😁 作者:Teddy (公众号:鸡仓故事汇)
⏰ 时间:2021年03月23日08:37:59
☁️ 天气:晴天
- 当Redis的内存使用达到设置的内存上限时就会触发内存淘汰机制,按照特定的淘汰算法进行数据清理,释放内存。
(1)noeviction:不淘汰,内存不足时, 新写入会报错。
(2)allkeys-lru:LRU,内存不足时,淘汰最近最少使用的key。
(3)allkeys-random:随机,内存不足时,在所有key中随机选择一个key淘汰。
(4)volatile-lru:过期时间内LRU,内存不足时,在设置了过期时间的key中,淘汰最近最少使用的key。
(5)volatile-random:过期时间内随机,内存不足时,在设置了过期时间的key中,随机选择一个key淘汰。
(6)volatile-ttl:更早过期时间,内存不足时,在设置了过期时间的key中,选择有更早过期时间的key淘汰。
Redis默认使用的是LRU算法,需要注意的是LRU并不是多有的keys进行LRU,
而是在所有的key中随机选择3个key,在这3个key中进行LRU算法选择;
3个这个个数可以在redis配置文件中进行配置maxmeory-samples选项。
在大规模并发的情况下,我们可以使用集群方式进行内存的扩充。
Redis的过期策略和内存淘汰机制是两种不同的方式,注意不要混淆
在内存淘汰期间并不会影响过期删除处理,过期策略主要用于处理内存中过且的数据。
参考:《Redis设计与实现》黄健宏著,网上对Redis的详解等
ok!今天的分享就到这里,小编(Teddy)在这里先感谢大家的到来。
虽然不是太详细,小编已经很努力,给小编来个一键三连(点赞,关注,收藏),小编会越来越努力。。。