redis爆了的解决方案

2023-10-19 17:30:36 浏览数 (1)

1. 当你的系统报:如下问题的时候,表示你的redis已经爆了

代码语言:javascript复制
redis.clients.jedis.exceptions.JedisDataException: OOM command not allowed when used memory > 'maxmemory'.
	at redis.clients.jedis.Protocol.processError(Protocol.java:123)
	at redis.clients.jedis.Protocol.process(Protocol.java:157)
	at redis.clients.jedis.Protocol.read(Protocol.java:211)
	at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297)
	at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:196)
	at redis.clients.jedis.Jedis.set(Jedis.java:2984)
	at com.sungrow.sgframe.api.isolarapi.powerstationservice.service.asyncop.AsyncService$1.run(AsyncService.java:635)
	at java.lang.Thread.run(Thread.java:748)

2. 首先你要找到出问题的reids,可以使用redis-cli链接redis地址

在控制台输入:

代码语言:javascript复制
info memory

3. 我们可以修改最大内存上限

代码语言:javascript复制
# 也可以通过这条命令设置 maxmemory 最大内存上限
config set maxmemory 3048000000

# 也可以通过这条命令设置内存淘汰策略 使用lru算法进行内存淘汰
config set maxmemory-policy allkeys-lru

再看下我们的内存使用情况

注意:当前修改的方式只是临时解决方案,redis重启就不会生效,如果想长久生效,需要修改配置文件

找到redis的配置文件

然后重启redis:

代码语言:javascript复制
systemctl restart redis

参考链接:https://www.mr-wu.cn/how-to-set-redis-max-memory/

0 人点赞