Redis的key过期删除策略和key的淘汰策略

Redis 使用定期删除和惰性删除策略来管理过期key,但可能导致内存占用过大。为解决此问题,引入了内存淘汰策略,如LRU、LFU等,当内存超过maxmemory时,根据设定的策略淘汰部分key。默认策略为noeviction,不删除任何key而是拒绝写操作。通过maxmemory_policy参数可设置不同淘汰策略。

一.key的过期删除策略

        ①定期删除:隔一段时间,就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。

        定期删除有个弊端:

        过期的key,但是没有被定期删除检测到,就会导致redis占用的内存空间越来越大,那么就有了惰性删除

        ②惰性删除:redis get到的key,会判断一下该key是否过期了,如果过期了那么就删除这个key。

        

使用定期删除和惰性删除两种策略可以很好的利用cpu,

但是会导致过期的key没有被访问到,但是也没有被定期抽取到,导致占用的内存越来越大,从而内存不足。那么就有了key的淘汰策略

二.key的淘汰策略

触发淘汰策略:占用的内存超过指定的maxmemory之后

怎么设置淘汰策略:设置maxmemory_policy参数

1.volatile-lru:最近最少使用算法,从设置了过期时间的键中选择空转时间最长的键值对清除掉

2.volatile-lfu:从设置了过期时间的键中选择某段时间之内使用频次最小的键值对清除掉

3.volatile-ttl:在设置过期key中删除过期时间最早的

4.volatile-random:在设置过期key中随机删除

5.allkeys-lru:所有的key中,选择空转时间最长的键值对清除掉

6.allkeys-lfu:所有的key中,选择某段时间之内使用频次最小的键值对清除掉

7.allkeys-random:在所有key中随机删除

8.noeviction:不做任何的清理工作,在redis的内存超过限制之后,所有的写入操作都会返回错误,但是读操作都能正常的进行

redis默认是第8中淘汰策略

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值