OOM: OOM command not allowed when used memory > 'maxmemory'(使用メモリが maxmemory を超えたためコマンド不可)
Redis意味
Redis の使用メモリが maxmemory の上限に達し、エビクション (eviction) ポリシーで新しいデータ用の領域を確保できないため、書き込みコマンドが拒否される。メモリが満杯で、書き込みができない。
原因
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'(マスターとのリンクが切断)