DBAtlas · Атлас эксплуатации баз данных

Поиск больших ключей (--bigkeys, --memkeys, MEMORY USAGE)

RedisПамять

Команда

# Largest keys per type by element count:
redis-cli -h redis1 -p 6379 --bigkeys -i 0.01
# By memory size:
redis-cli -h redis1 -p 6379 --memkeys -i 0.01
# Size and length together, top 20 keys (redis-cli 7.4+):
redis-cli -h redis1 -p 6379 --keystats --top 20 -i 0.01
# Memory usage (SAMPLES 0: all elements) and encoding of a single suspicious key:
redis-cli -h redis1 -p 6379 MEMORY USAGE kullanici:1001:sepet SAMPLES 0
redis-cli -h redis1 -p 6379 OBJECT ENCODING kullanici:1001:sepet

Что делает

Сканирует пространство ключей через SCAN и сообщает ключи с наибольшим числом элементов и наибольшим объёмом памяти по каждому типу; показывает реальное потребление памяти и кодировку подозрительного ключа.

Когда использовать

Когда память неожиданно растёт, одна команда (HGETALL, SMEMBERS, DEL) вызывает задержку или один узел кластера использует больше памяти, чем остальные.

Внимание

Сканирование использует SCAN и не блокирует сервер, но проходит всё пространство ключей; -i 0.01 делает паузу каждые 100 вызовов SCAN для снижения нагрузки. Удаление большого ключа через DEL блокирует основной поток; используйте UNLINK. MEMORY USAGE с SAMPLES 0 имеет сложность O(N) на больших коллекциях. Запуск на реплике не нагружает мастер.

Открыть в DBAtlas →

Связанные материалы