redis六种淘汰策略

描述

          

redis是个基于内存的缓存数据库,既然是基于内存的,那肯定就会有存满的时候

 

如果真的存满了,再有新的数据过来肯定就存不进去了

 

此时redis会执行既定的一些淘汰策略,本文大概讲一下redis六种淘汰策略

 

 

01六种淘汰策略

 

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

 

2.allkeys-lru:从所有key中使用LRU算法进行淘汰(LRU算法:即最近最少使用算法)

 

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

 

4.allkeys-random:从所有key中随机淘汰数据

 

5.volatile-random:从设置了过期时间的key中随机淘汰

 

6.volatile-ttl:在设置了过期时间的key中,淘汰过期时间剩余最短的

 

当使用volatile-lru、volatile-random、volatile-ttl这三种策略时,如果没有key可以被淘汰,则和noeviction一样返回错误

 

 

02如何获取及设置内存淘汰策略

 

1、获取当前内存淘汰策略:

 

127.0.0.1:6379> config get maxmemory-policy

 

可以看到当前使用的默认的noeviction策略

 

2、获取Redis能使用的最大内存大小

 

127.0.0.1:6379> config get maxmemory

 

如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。32 位的机器最大只支持 4GB 的内存,而系统本身就需要一定的内存资源来支持运行,所以 32 位机器限制最大 3 GB 的可用内存

 

3、设置淘汰策略

 

通过配置文件设置淘汰策略(修改redis.conf文件):

 

maxmemory-policy allkeys-lru

 

通过命令修改淘汰策略:

 

127.0.0.1:6379> config set maxmemory-policy allkeys-lru

 

4、设置Redis最大占用内存大小

 

#设置Redis最大占用内存大小为100M
127.0.0.1:6379> config set maxmemory 100mb

 

审核编辑 :李倩


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分