+
95
-

回答

有两种办法

一、设置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集群

网友回复

我知道答案,我要回答