> Что происходит при запросе с использованием звездочки в Redis (Python)
Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы
Компании: Sunlight
Стек: Redis, Python
> Пример ответа
При использовании команды KEYS * в Redis происходит блокирующий обход всего ключевого пространства в однопоточном цикле событий. Это означает, что Redis последовательно сканирует все ключи в базе данных, сравнивая их с заданным шаблоном (в данном случае * - все ключи). Пока выполняется KEYS *, сервер не обрабатывает никакие другие запросы, что может привести к задержкам или тайм-аутам в продакшене, особенно при большом количестве ключей (миллионы).
В Python с библиотекой redis-py это выглядит так:
PYTHONimport redisr = redis.Redis()keys = r.keys('*') # Блокирующая операция
Рекомендация: Вместо KEYS * используйте команду SCAN (или scan_iter в Python), которая возвращает ключи порциями без блокировки:
PYTHONfor key in r.scan_iter():print(key)
SCAN работает итеративно, позволяя Redis обрабатывать другие запросы между вызовами, что безопасно для продакшена.
> Похожие задачи по Python
Какие планы по развитию как программиста на ближайшие годы
Как дебажить в Docker контейнере
Почему Redis может отвечать медленно
Что такое колоночные базы данных и почему они лучше для аналитики
> Похожие задачи по backend
Какие планы по развитию как программиста на ближайшие годы
Как дебажить в Docker контейнере
Почему Redis может отвечать медленно
Что такое колоночные базы данных и почему они лучше для аналитики
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью