+
80
-

redis内存满了怎么办?

redis内存满了怎么办?


网友回复

+
0
-

有两种办法

一、设置redis淘汰策略

Redis定义了「8种内存淘汰策略」用来处理redis内存满的情况: 1.noeviction:直接返回错误,不淘汰任何已经存在的redis键 2.allkeys-lru:所有的键使用lru算法进行淘汰 3.volatile-lru:有过期时间的使用lru算法进行淘汰 4.allkeys-random:随机删除redis键 5.volatile-random:随机删除有过期时间的redis键 6.volatile-ttl:删除快过期的redis键 7.volatile-lfu:根据lfu算法从有过期时间的键删除 8.allkeys-lfu:根据lfu算法从所有键删除

具体操作步骤:

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

二、增加内存、进行redis集群

我知道答案,我要回答