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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介:

阅读目录

现象

日志里出现异常:

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?

 











本文转自jihite博客园博客,原文链接:http://www.cnblogs.com/kaituorensheng/p/6187044.html,如需转载请自行联系原作者


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
缓存 NoSQL Redis
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
【Azure Redis 缓存】Redission客户端连接Azure:客户端出现 Unable to send PING command over channel
173 3
|
4月前
|
缓存 NoSQL Redis
Redis性能优化问题之当Redis内存达到maxmemory后,淘汰数据的逻辑是怎样的
Redis性能优化问题之当Redis内存达到maxmemory后,淘汰数据的逻辑是怎样的
|
6月前
|
缓存 NoSQL 中间件
redis内存溢出报错--OOM command not allowed when used memory > 'maxmemory'
该内容是关于Redis缓存服务器的使用指南。通过Xshell连接IP地址为25.218.153.193或206的主机,进入/data/iuap/middleware/redis-30001/bin目录,使用`redis-cli`连接到IP为206的30003端口。登录时需`auth yonyou*123`,可运行`info`和`info memory`查看状态,`flushall`清理缓存。在清理前,要备份/data/iuap/middleware/redis-30003/data/下的.aof和.rdb文件,利用tar命令打包并移至/tmp目录。
|
6月前
|
存储 缓存 NoSQL
Redis如何实现LRU(Least Recently Used)淘汰策略?
Redis如何实现LRU(Least Recently Used)淘汰策略?
107 0
|
NoSQL Java 测试技术
Springboot2.x集成lettuce连接redis集群报超时异常Command timed out after 6 second(s)
最近在对一新开发Springboot系统做压测,发现刚开始压测时,可以正常对redis集群进行数据存取,但是暂停几分钟后,接着继续用jmeter进行压测时,发现redis就开始突然疯狂爆出异常提示:Command timed out after 6 second(s)......
392 0
|
NoSQL Redis
node-redis:ErrorReply: ERR wrong number of arguments for ‘auth‘ command
node-redis:ErrorReply: ERR wrong number of arguments for ‘auth‘ command
411 0
|
NoSQL Java Redis
记录Redis操作的异常QueryTimeoutException & RedisCommandTimeoutException: Command timed out after 1 min
记录Redis操作的异常QueryTimeoutException & RedisCommandTimeoutException: Command timed out after 1 min
3895 0
|
存储 SQL JSON
Not Only SQL (二) - Redis Command
Not Only SQL (二) - Redis Command
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
77 6
下一篇
无影云桌面