Redis: OOM command not allowed when used memory > ‘maxmemory’

现象

日志里出现异常:

OOM command not allowed when used memory > ‘maxmemory‘

原因

内存已满,不允许再存数据了,可以通过redis-cli 查看redis的具体信息

127.0.0.1:6379> info memory
# Memory
used_memory:4120248
used_memory_human:3.93M
used_memory_rss:11509760
used_memory_peak:1977983104
used_memory_peak_human:1.84G
used_memory_lua:36864
mem_fragmentation_ratio:2.79
mem_allocator:jemalloc-3.6.0

注:

  • used_memory_human表示已用内存
  • used_memory_rss表示系统给redis分配的内存(即常驻内存)
  • mem_fragmentation_ratio=used_memory_rss/used_memory比例,一般情况下,used_memory_rss略高于used_memory,当内存碎片较多时,则mem_fragmentation_ratio会较大,可以反映内存碎片是否很多

解决

注:如修改了配置文件需重启redis

1. 增加redis内存,修改redis.conf

maxmemory 2gb

2. 修改redis存储策略

默认的redis设置是非常保守的,即内存超限后就不在存储,可以把策略修改为LRU算法(最近最少使用算法)——新存储的信息会替换掉旧的信息,从而不会是内存越线,修改redis.conf

maxmemory-policy volatile-lru

3. 少往reids存数据

是否有必要把这么多数据存入redis?

时间: 2024-10-03 13:39:51

Redis: OOM command not allowed when used memory > ‘maxmemory’的相关文章

Redis: OOM command not allowed when used memory > ‘maxmemory

Redis: OOM command not allowed when used memory > ‘maxmemory’ 解决方式: $ vim /etc/redis/6903.conf maxmemory 3gb maxmemory-policy allkeys-lru maxmemory-samples 5

Redis报错“ OOM command not allowed when used memory > 'maxmemory' ”

生产环境上遇到这个问题,控制台不停打印 “OOM command not allowed when used memory > 'maxmemory' ”; 起初不知道是什么,经过一番搜索: 1.登陆redis客户端:./redis-cli -h IP -p port -a passwd 2.执行命令:redis>info memory 若配置文件中,最大内存的策略设置为 maxmemory-policy volatile-lru 此配置只是清楚设置过期时间的key值,然而本应用并没有设置过期

redis内存不够 : OOM command not allowed when used memory > ‘maxmemory’

Redis内存不够,报错. 三种解决思路 注:如修改了配置文件需重启redis 1. 增加redis内存,修改redis.conf(集群中为redis-env.sh),默认为1024MB,增加到合适的内存. maxmemory 2gb 2. 修改redis存储策略 默认的redis设置是非常保守的,即内存超限后就不在存储,可以把策略修改为LRU算法(最近最少使用算法)--新存储的信息会替换掉旧的信息,从而不会是内存越线,修改redis.conf.这个必须结合业务场景,如果没有自动加载数据到red

redis写磁盘报错Cannot allocate memory

查看 Redis 日志发现系统在频繁报错: [1821] 10 Nov 09:59:04.086 # Can't save in background: fork: Cannot allocate memory [1821] 10 Nov 09:59:10.002 * 1 changes in 900 seconds. Saving... 在小内存的进程上做一个fork,不需要太多资源,但当这个进程的内存空间以G为单位时,fork就成为一件很恐怖的操作.何况在16G内存的主机上fork 14G内

Redis Cluster机器内存充爆处理

机器配置 系统:CentOS6.7 配置:4C8G 应用:Redis Cluster,实例化 现象 1.无法启动redis,启动后系统OOM,直接杀死 2.Redis: OOM command not allowed when used memory > 'maxmemory' 原因 内存已满,不允许数据在写入 注: used_memory_human表示已用内存 used_memory_rss表示系统给redis分配的内存(即常驻内存) mem_fragmentation_ratio=used

redis 使用内存超过maxmemory

redis使用量超过了maxmemory,这时无法增加最大内存,redis 实例没有可用内存,导致命令都会执行失败 (error) OOM command not allowed when used memory > 'maxmemory'. 解决办法: flushdb /or 重启redis 原文地址:https://www.cnblogs.com/mikeluwen/p/8434814.html

设置Redis最大占用内存

https://blog.csdn.net/happyrabbit456/article/details/54945667 Redis需要设置最大占用内存吗?如果Redis内存使用超出了设置的最大值会怎样? 设置Redis最大占用内存 Redis设置最大占用内存,打开redis配置文件,找到如下段落,设置maxmemory参数,maxmemory是bytes字节类型,注意转换.修改如下所示: Vim 1 2 3 4 5 6 # In short... if you have slaves att

Redis的逐出算法

Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足.如果内存不满足新加入数据的最低存储要求, redis要临时删除一些数据为当前指令清理存储空间.清理数据的策略称为逐出算法.注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行.当对所有数据尝试完毕后,如果不能达到内存清理的要求,将出现错误信息. (error) OOM command not allowed when used memory >'max

Redis4.0 之持久化存储

redis如果提供缓存服务,可以关闭所有持久化存储,如此一来redis重启后所有数据会丢失 开启rdb或aof持久化存储,能把redis中的数据持久化到磁盘中. rdb和aof对性能都有影响,所以建议持久化的操作在从库上进行 Redis的rdb存储方式,使用save配置开启rdb存储或者关闭rdb存储 # 默认情况下rdb持久化存储是开启的 [[email protected] ~]# redis-cli -h 127.0.0.1 config set save "" # 关闭rdb存