大家好,欢迎来到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