OOM: OOM command not allowed when used memory > 'maxmemory'(已用内存 > 'maxmemory' 时不允许执行命令)
Redis含义
Redis 使用的内存已达到 maxmemory 限制,由于淘汰策略无法为新数据腾出空间,写命令被拒绝。内存已满;无法写入。
原因
超出 maxmemory 限制、选择了 noeviction 策略(从不删除任何键)、没有 TTL 的数据不断增长、内存泄漏,或 RAM 不足以支撑该限制。
解决方法
检查内存使用:INFO memory 和 MEMORY USAGE。选择合适的淘汰策略(如 allkeys-lru 或 volatile-lru):CONFIG SET maxmemory-policy allkeys-lru。为键设置 TTL 以便自动清理。增大 maxmemory/RAM。找出并缩小大键(redis-cli --bigkeys)。清除不必要的数据。
同一数据库的其他条目
- WRONGTYPEWRONGTYPE Operation against a key holding the wrong kind of value(对持有错误类型值的键执行了操作)
- NOAUTHNOAUTH Authentication required(需要认证)
- WRONGPASSWRONGPASS invalid username-password pair or user is disabled(用户名-密码组合无效或用户已禁用)
- READONLYREADONLY You can't write against a read only replica(不能对只读副本执行写入)
- MASTERDOWNMASTERDOWN Link with MASTER is down and replica-serve-stale-data is set to 'no'(与 MASTER 的连接已断开,且 replica-serve-stale-data 设为 'no')