Что произойдёт в Redis при запросе со * (звёздочкой)?

Redis представляет собой in-memory key-value хранилище в команде, например KEYS * — шаблон, соответствующий всем ключам

Короткий ответ

Что ответить на собеседовании

Redis представляет собой in-memory key-value хранилище в команде, например KEYS * — шаблон, соответствующий всем ключам

Подробный разбор

Ответ с пояснениями

Что произойдёт в Redis при запросе со * (звёздочкой)?

  • Redis представляет собой in-memory key-value хранилище

  • в команде, например KEYS * — шаблон, соответствующий всем ключам

  • Команда KEYS * возвращает все ключи из базы данных

  • во время выполнения команда блокирует сервер

  • при большом числе ключей это приводит к снижению производительности

  • для итеративного поиска рекомендуется применять SCAN

  • KEYS * удобна при отладке, однако не подходит для продакшена

Подробный ответ

Основной ответ

Если в Redis выполнить запрос с ключом * (звёздочкой), например отправить команду GET * или применить KEYS *, результат будет определяться типом команды. В Redis * является wildcard-паттерном со значением "все ключи", однако автоматически подставляться во все команды он не может. Так, KEYS * вернёт перечень всех ключей базы, тогда как GET * завершится ошибкой: GET принимает конкретный ключ, а не шаблон.

Ключевые моменты

  • Команда KEYS * выдаёт все ключи, соответствующие шаблону *, то есть все ключи текущей базы данных. Хотя это удобно, при большом количестве ключей команда способна создать существенную нагрузку и заблокировать сервер.
  • Команды с шаблонами работают только с отдельными командами — например, SCAN, KEYS, DEL (с несколькими ключами, но без шаблона), но не с GET или SET.
  • Промежуток масштабируемости: применять KEYS * на продакшн-сервере не рекомендуется, поскольку команда блокирует Redis и способна замедлить его работу (это измеряют при количестве ключей до сотен тысяч и более).
  • Попытка выполнить что-либо вроде GET * приведёт к синтаксической ошибке Redis, так как GET требует точное имя ключа.

Практический контекст

В реальных проектах для обхода ключей по шаблону применяют команду SCAN с паттерном *: она выполняет итерацию и не блокирует сервер. Для отладки и небольших баз подходит KEYS *. Когда требуется удалить большое число ключей по шаблону, используют скрипты с SCAN и DEL, избегая проблем с производительностью.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку