Redis缓存淘汰策略

Redis是基于内存key-value键值对的内存数据库,我们安装完数据库之后,内存往往会受到系统内存大小的限制,我们也可以配置redis能使用的最大的内存大小

1.配置Redis内存

(1)通过配置文件修改

我们可以通过配置文件修改,安装完redis之后我们可以在redis根目录中找到redis.conf文件,在配置文件中添加一下参数就可以设置redis的内存大小了

maxmemory 100mb    //指定最大内存为100mb

(2)进入客户端修改

在服务器上输入redis-cli之后进入redis客户端,通过命令动态修改redis内存大小

//设置Redis最大占用内存大小为100M
127.0.0.1:6379> config set maxmemory 100mb
//获取设置的Redis能使用的最大内存大小
127.0.0.1:6379> config get maxmemory

如果不设置最大内存大小或者设置最大内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存

2.redis内存淘汰策略

我们设置完redis内存之后,我们就像里面放数据,但是内存总有满的时候,满的时候redis又是怎么处理的呢

首先,我们每进行一次redis操作的时候,redis都会检测可用内存,判断是否要进行内存淘汰,当超过可用内存的时候,我们就会使用对应策略,默认是no-envicition

1.no-envicition:我们先了解默认的,该策略对于写请求不再提供服务,会直接返回错误,当然排除del等特殊操作

2.allkeys-random:从redis中随机选取key进行淘汰

3.allkeys-lru:从redis中选取使用最少的key进行淘汰

4.volatile-random:从redis中设置过过期时间的key,进行随机淘汰

5.volatile-ttl:从redis中选取即将过期的key,进行淘汰

6.volatile-lru:从redis中设置过过期时间的key中,选取最少使用的进行淘汰

我们自己可以命令查看当前redis使用的淘汰策略

config get maxmemory-policy    //获取当前内存淘汰策略
config set maxmemory-policy valatile-lru  //通过命令修改淘汰策略

 

你可能感兴趣的:(redis,redis)