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

Поиск ключей по шаблону без KEYS и их безопасное удаление (SCAN + UNLINK)

RedisОбслуживание

Команда

# Cursor-based scan instead of KEYS (call again with the returned cursor until it returns 0):
SCAN 0 MATCH oturum:* COUNT 1000 TYPE string
# Number of keys matching the pattern:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | wc -l
# Bulk delete in batches of 500, freeing memory in the background:
redis-cli -h redis1 -p 6379 --scan --pattern 'oturum:*' --count 1000 | xargs -r -n 500 redis-cli -h redis1 -p 6379 UNLINK

Что делает

Сканирует пространство ключей курсором без блокировки сервера, подсчитывает ключи, соответствующие шаблону и типу, и массово удаляет их через UNLINK, освобождая память в фоне.

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

При чистке ключей, оставленных старой версией приложения, чтобы узнать, сколько ключей под префиксом, или когда иначе понадобился бы KEYS на продакшене.

Внимание

KEYS возвращает всё пространство ключей сразу и на больших данных блокирует сервер на секунды; не используйте его на продакшене. SCAN не даёт полной гарантии для ключей, добавленных/удалённых во время сканирования, и может вернуть один ключ несколько раз. Имена ключей с пробелами или кавычками ломаются в xargs. Перед удалением проверьте количество и несколько примеров; отмены нет.

Открыть в DBAtlas →

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