Redis内存淘汰6种?NO,你的知识需要更新了(LFU)「建议收藏」

Redis内存淘汰6种?NO,你的知识需要更新了(LFU)「建议收藏」最后一项更新,你看到过么?

大家好,欢迎来到IT知识分享网。

最后一项更新,你看到过么?

一、6种淘汰策略:

a、noeviction(默认):对于写请求不再提供服务,直接返回错误(DEL请求和部分特殊请求除外)

b、allkeys-lru:从所有key中,使用LRU算法进行淘汰

c、volatile-lru:从设置了过期时间的key中,使用LRU算法进行淘汰

d、allkeys-random:从所有key中随机淘汰

e、volatile-random:从设置过期时间的key中,随机淘汰

f、volatile-ttl:在设置过期时间的key中,根据key的过期时间进行淘汰,越早过期的越有限被淘汰

二、设置命令:

获取设置的淘汰策略命令:config get maxmemory-policy

设置淘汰策略的命令:config set maxmemory-policy allkeys-lru

通过配置文件设置淘汰策略(redis.conf):maxmemory-policy allkeys-lru

通过配置设置内存大小(redis.conf):memory 100mb

通过命令修改内存大小:config set memory 100mb

三、LRU算法:最近最少使用、访问

redis近似的LRU算法:随机采样淘汰法淘汰数据,每次随机出5个key,从里面淘汰最近最少使用的key

修改采样数量的命令:maxmemory-samples 10;(采样数量越大,越近似于严格的LRU算法)

redis为了实现近似的LRU算法,给每个key增加了24bit的字段,用来存储key最后一次被访问的时间

redis3.0对LRU算法进行优化,新算法会维护一个侯选池(大小16),池中的数据根据访问时间进行排序,第一次随机选取的key都放在池中,随后每次随机选取的key只有在访问时间小于池中最小时间时,才会放入其中,直到侯选池放满,当放满后,如果需要新key放入,则池中最后访问时间最大(最近被访问的)移除。当有需要淘汰时,则直接从池中删除最久没访问的key进行淘汰

四、redis4.0新增的淘汰策略:

volatile-lfu:设置过期时间的key中,使用LFU算法淘汰

allkeys-lfu:所有的key使用LFU算法淘汰

LFU:Least Frequently Used,根据访问频率判断淘汰,最少访问的被优先淘汰,访问多的被留下来。

相比于LRU的好处,如果某个key在执行淘汰策略前刚好被访问了一次,那么通过LRU就淘汰不掉,通过LFU可以正常淘汰

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/6149.html

(0)
上一篇 2022-12-18 07:30
下一篇 2022-12-18 07:50

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信