首页 > 代码库 > Redis: OOM command not allowed when used memory > ‘maxmemory’
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# Memoryused_memory:4120248used_memory_human:3.93Mused_memory_rss:11509760used_memory_peak:1977983104used_memory_peak_human:1.84Gused_memory_lua:36864mem_fragmentation_ratio:2.79mem_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?
Redis: OOM command not allowed when used memory > ‘maxmemory’
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。