redis错误集锦

文章讨论了在Redis使用中遇到的ERRcommandnotallowedwhenusedmemory>‘maxmemory’错误,该错误通常发生在内存达到最大限制时。内容包括错误的表现形式、问题分析(关联rehash操作和key数量)、处理方法(预留内存空间以减少key)以及rehash所需内存的粗略计算方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis错误集锦
工作中遇到的Redis出错备忘。

一,ERR command not allowed when used memory > ‘maxmemory’

1,报错信息和错误表现形式

报错信息如下:


Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR command not allowed when used memory > 'maxmemory'

在监控页面的表现形式为:
在这里插入图片描述

在十一点的时候Redis的内存突然暴涨,然后又下降。内存也随之增加了。使用的redis是一组四个的Redis组,十一点时只有其中Redis出现了这种情况,在之前的九点钟有另外一个Redis也出现了类似的错误。

2,问题分析

从图中可以看到实际是随着Redis key的增加,Redis进行了rehash操作,rehash操作。

rehash 是redis自身的机制,key数量越多 越容易触发rehash。
随着key数量的增多,rehash占用的内存会越来越大。
rehash 结束后,内存又会降下去,rehash 过程不会特别久。从图中也可以看出内存是先突增然后又降下去了。这是内存突增到了瓶颈,内存自动扩容,所以内存增大了。rehash结束之后内存又释放了。

3,处理方式

  • 内存预留出rehash需要的空间来
  • 减少key数量

4,rehash所需内存计算

rehash所需要的内存计算公式比较复杂,但是有个粗略计算的:
key数量 * 16 * 2

比如有67000000个key
67000000 * 16 * 2 / 1024 / 1024 / 1024 =1.996 大约2G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一杯拿铁go

你的打赏是我更新最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值