> Что происходит при запросе с использованием звездочки в Redis (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: Sunlight

Стек: Redis, Python

> Пример ответа

При использовании команды KEYS * в Redis происходит блокирующий обход всего ключевого пространства в однопоточном цикле событий. Это означает, что Redis последовательно сканирует все ключи в базе данных, сравнивая их с заданным шаблоном (в данном случае * - все ключи). Пока выполняется KEYS *, сервер не обрабатывает никакие другие запросы, что может привести к задержкам или тайм-аутам в продакшене, особенно при большом количестве ключей (миллионы).

В Python с библиотекой redis-py это выглядит так:

PYTHON
import redis
r = redis.Redis()
keys = r.keys('*') # Блокирующая операция

Рекомендация: Вместо KEYS * используйте команду SCAN (или scan_iter в Python), которая возвращает ключи порциями без блокировки:

PYTHON
for key in r.scan_iter():
print(key)

SCAN работает итеративно, позволяя Redis обрабатывать другие запросы между вызовами, что безопасно для продакшена.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью