redis的过期策略
1)定时过期
每个创建的KEY都设置一个定时器,到过期时间,则对KEY删除。
优点:定期删除数据,对内存友好
缺点:占用大量CPU去清除数据,影响缓存的响应时间和吞吐量
2)惰性过期
在访问KEY时,才去判断它是否过期,过期就清除数据。
优点:节省CPU资源
缺点:对内存不友好
3)定期过期
每隔一段时间,随机清除内存中过期的KEY。
它是定时过期和惰性过期的折中方案。
Redis中同时使用了惰性过期和定期过期两种过期策略。
redis的内存淘汰策略
redis4.0以前的淘汰策略
volatile-lru:当内存不足以容纳新写入数据时,从设置了过期时间的key中使用LRU(最近最少使用)算法进行淘汰;
allkeys-lru:当内存不足以容纳新写入数据时,从所有key中使用LRU(最近最少使用)算法进行淘汰。
volatile-random:当内存不足以容纳新写入数据时,从设置了过期时间的key中,随机淘汰数据;。
allkeys-random:当内存不足以容纳新写入数据时,从所有key中随机淘汰数据。
volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的key中,根据过期时间进行淘汰,越早过期的优先被淘汰;
noeviction:默认策略,当内存不足以容纳新写入数据时,新写入操作会报错。
redis4.0以后新增的淘汰策略
volatile-lfu:4.0版本新增,当内存不足以容纳新写入数据时,在过期的key中,使用LFU算法进行删除key。
allkeys-lfu:4.0版本新增,当内存不足以容纳新写入数据时,从所有key中使用LFU算法进行淘汰;
本文详细解读Redis的过期策略,包括定时、惰性和定期过期,并介绍4.0前后不同内存淘汰策略:volatile-lru、allkeys-lru等,以及新增的volatile-lfu和allkeys-lfu。
1728

被折叠的 条评论
为什么被折叠?



