Добавить в корзинуПозвонить
Найти в Дзене
Lyakhov Eugene

Теоретические задачи redis

1. Вопрос:
Что такое Redis? Какие его основные особенности? Ответ:
Redis (Remote Dictionary Server) — это высокопроизводительное NoSQL-хранилище данных типа «ключ-значение» с открытым исходным кодом. Основные особенности: 2. Вопрос:
Какие типы данных поддерживает Redis? Ответ:
Redis поддерживает следующие основные типы: 3. Вопрос:
В чём принципиальная разница между Redis и Memcached? Ответ: 4. Вопрос:
Что такое Redis Strings? Приведите примеры использования. Ответ:
Strings — базовый тип, хранит любые данные: текст, числа, сериализованные объекты, бинарные данные. Команды: SET, GET, INCR, DECR, APPEND и т.д.
Примеры: 5. Вопрос:
Как работают списки (Lists) в Redis? Основные команды. Ответ:
Списки реализованы как связные списки строк. Поддерживают вставку/удаление с обоих концов. Команды: 6. Вопрос:
Для чего используются множества (Sets) в Redis? Ответ:
Sets — неупорядоченные коллекции уникальных строк. Быстрые операции добавления, удаления, проверки принадлежности и множественные операц

1. Вопрос:
Что такое Redis? Какие его основные особенности?

Ответ:
Redis (Remote Dictionary Server) — это высокопроизводительное NoSQL-хранилище данных типа «ключ-значение» с открытым исходным кодом. Основные особенности:

  • Хранение данных в оперативной памяти (in-memory) — высокая скорость.
  • Богатый набор структур данных (строки, списки, множества, хеши и др.).
  • Опциональная персистентность на диск.
  • Поддержка репликации, транзакций, Lua-скриптов, Pub/Sub.
  • Работа в режиме кластера и сентинеля для отказоустойчивости.

2. Вопрос:
Какие типы данных поддерживает Redis?

Ответ:
Redis поддерживает следующие основные типы:

  • String — строка (до 512 МБ).
  • List — список строк, упорядоченный по вставке.
  • Set — неупорядоченное множество уникальных строк.
  • Hash — хеш-таблица (поле‑значение).
  • Sorted Set — множество с оценкой (score), упорядоченное по ней.
  • Bitmap, HyperLogLog, Stream, Geospatial — дополнительные типы.

3. Вопрос:
В чём принципиальная разница между Redis и Memcached?

Ответ:

  • Данные: Redis хранит множество структур, Memcached — только строки.
  • Персистентность: Redis может сохранять данные на диск, Memcached — только in‑memory, при перезапуске теряет всё.
  • Репликация/кластеризация: Redis из коробки поддерживает репликацию, сентинель и кластер; Memcached не имеет встроенных механизмов.
  • Производительность: Memcached быстрее для простых get/set, Redis богаче функционально.

4. Вопрос:
Что такое Redis Strings? Приведите примеры использования.

Ответ:
Strings — базовый тип, хранит любые данные: текст, числа, сериализованные объекты, бинарные данные. Команды: SET, GET, INCR, DECR, APPEND и т.д.
Примеры:

  • Кэширование HTML-фрагментов.
  • Счётчики (просмотры, лайки) — атомарный инкремент.
  • Хранение сессий пользователей.

5. Вопрос:
Как работают списки (Lists) в Redis? Основные команды.

Ответ:
Списки реализованы как связные списки строк. Поддерживают вставку/удаление с обоих концов. Команды:

  • LPUSH / RPUSH — добавить слева/справа.
  • LPOP / RPOP — удалить и вернуть элемент.
  • LRANGE — получить подмножество.
  • LLEN — длина списка.
    Используются для очередей, логов, timeline.

6. Вопрос:
Для чего используются множества (Sets) в Redis?

Ответ:
Sets — неупорядоченные коллекции уникальных строк. Быстрые операции добавления, удаления, проверки принадлежности и множественные операции (пересечение, объединение, разность).
Примеры:

  • Хранение тегов поста.
  • Реализация лайков (каждый пользователь — элемент).
  • Уникальные посетители за день.

7. Вопрос:
Что такое хеши (Hashes) в Redis? Какие у них преимущества?

Ответ:
Hashes — структура «поле‑значение» внутри одного ключа. Позволяет хранить объекты без сериализации всего объекта.
Преимущества:

  • Экономия памяти по сравнению со множеством отдельных ключей.
  • Возможность читать/писать отдельные поля.
  • Атомарные операции над полями.
    Пример: хранение профиля пользователя (поля: name, email, age).

8. Вопрос:
Как работают сортированные множества (Sorted Sets)? Приведите пример.

Ответ:
Каждому элементу Sorted Set назначается числовой
score, по которому множество автоматически сортируется. Элементы уникальны.
Команды: ZADD, ZRANGE, ZRANK, ZSCORE и др.
Пример: лидерборд игры — игроки с очками (score = очки), быстрое получение топа.

9. Вопрос:
Что такое Redis Streams? Для чего нужны?

Ответ:
Streams — лог-подобная структура для хранения сообщений с последовательной записью. Поддерживает группы потребителей, подтверждения обработки, диапазонный запрос.
Используются для:

  • Очередей событий (event sourcing).
  • Обмена сообщениями между микросервисами.
  • Аудита действий пользователей.

10. Вопрос:
Как Redis обеспечивает персистентность данных?

Ответ:
Два основных механизма:

  • RDB (Redis Database) — снапшоты всего набора данных в заданные интервалы. Компактный файл, удобен для бэкапов.
  • AOF (Append Only File) — журнал всех записывающих команд, воспроизводимый при старте. Обеспечивает более высокую сохранность (можно настроить fsync).
    Можно использовать одновременно.

11. Вопрос:
В чём разница между RDB и AOF? Когда что выбирать?

Ответ:
RDB: быстрее при восстановлении больших данных, занимает меньше места, но возможна потеря изменений за последние минуты.
AOF: гибкая настройка сохранности (потеря максимум одной секунды), файл может быть перезаписан (BGREWRITEAOF), но медленнее RDB и обычно больше объём.
Выбор: RDB — для бэкапов, AOF — если важна минимальная потеря данных, комбинированный режим даёт баланс.

12. Вопрос:
Что такое Redis replication? Как работает мастер-ведомый?

Ответ:
Репликация — асинхронное копирование данных с мастера на одну или несколько реплик.
Процесс:

  1. Реплика подключается к мастеру и отправляет SYNC (или PSYNC для частичной синхронизации).
  2. Мастер создаёт RDB-снапшот и отправляет его, затем передаёт все новые команды.
  3. После полной синхронизации реплика применяет команды, сохраняя актуальность.
    Используется для масштабирования чтения и отказоустойчивости.

13. Вопрос:
Что такое Redis Sentinel? Как он обеспечивает высокую доступность?

Ответ:
Sentinel — система мониторинга, уведомлений и автоматического переключения при отказе мастера (failover).
Задачи:

  • Постоянная проверка доступности мастеров и реплик.
  • Автоматическое повышение реплики до мастера при сбое.
  • Перенастройка клиентов через уведомления о новом мастере.
    Для надёжности запускают нечётное количество сентинелей (минимум 3).

14. Вопрос:
Что такое Redis Cluster? Как распределяются данные?

Ответ:
Redis Cluster — распределённая реализация с автоматическим шардированием.

  • Данные разбиваются на 16384 слота (hash slot).
  • Каждый узел обслуживает подмножество слотов.
  • Поддерживает репликацию (каждый мастер имеет реплики).
  • Клиент может обращаться к любому узлу; при запросе к «чужому» слоту возвращается перенаправление -MOVED.
    Обеспечивает линейную масштабируемость и частичную отказоустойчивость.

15. Вопрос:
Как Redis обрабатывает истечение срока действия ключей (expiry)?

Ответ:
У каждого ключа может быть задан TTL (time to live) через EXPIRE, SETEX и др. Redis удаляет ключи двумя способами:

  • Пассивное удаление — при попытке доступа к просроченному ключу он удаляется и возвращается nil.
  • Активное удаление — периодически (каждые 100 мс) Redis случайно выбирает 20 ключей с TTL, удаляет просроченные; если >25% ключей удалено, повторяет.

16. Вопрос:
Какие стратегии удаления устаревших ключей при переполнении памяти (eviction policies)?

Ответ:
Redis позволяет настроить политику вытеснения, когда память заполнена (параметр maxmemory-policy):

  • noeviction — ошибка на запись.
  • allkeys-lru — удаляет наименее недавно используемые ключи из всех.
  • volatile-lru — только среди ключей с TTL.
  • allkeys-lfu, volatile-lfu — по частоте использования.
  • allkeys-random, volatile-random — случайно.
  • volatile-ttl — с наименьшим TTL.

17. Вопрос:
Что такое транзакции в Redis? Как работают MULTI, EXEC, WATCH?

Ответ:
Транзакции в Redis — не изолированные как в SQL, а пакетное выполнение команд.

  • MULTI — начало транзакции; последующие команды ставятся в очередь.
  • EXEC — атомарное выполнение всех накопленных команд (не прерываются командами других клиентов).
  • WATCH — оптимистическая блокировка: проверяет, не изменились ли наблюдаемые ключи; если изменены — EXEC отменяется.
    Ошибки в очереди не откатывают выполненные команды.

18. Вопрос:
Что такое Lua-скрипты в Redis? Какие преимущества?

Ответ:
Redis позволяет выполнять Lua-скрипты на стороне сервера через команду EVAL.
Преимущества:

  • Атомарность — скрипт выполняется целиком без прерываний.
  • Снижение сетевых задержек — несколько операций за один запрос.
  • Повторное использование — скрипты можно загружать командой SCRIPT LOAD и вызывать по SHA1.
    Используются для сложных манипуляций с данными, кастомных команд.

19. Вопрос:
Как оптимизировать производительность Redis?

Ответ:

  • Использовать правильные структуры данных (например, Hashes вместо множества String).
  • Включить appendfsync в режим everysec для баланса скорости и надёжности AOF.
  • Избегать команд с большой временной сложностью (O(N)) для длинных ключей (SMEMBERS, KEYS).
  • Использовать SCAN вместо KEYS.
  • Включать maxmemory и подходящую политику вытеснения.
  • Минимизировать сетевые задержки: пайплайны, объединение команд, Lua.
  • Мониторить latency и медленные запросы (SLOWLOG).

20. Вопрос:
Какие команды для мониторинга состояния Redis?

Ответ:

  • INFO — статистика по серверу, памяти, репликации и т.д.
  • MONITOR — поток всех команд в реальном времени (тяжёлая команда, только для отладки).
  • SLOWLOG — просмотр медленных запросов.
  • CLIENT LIST — информация о подключениях.
  • MEMORY STATS — детали по использованию памяти.
  • LATENCY — инструменты для измерения задержек.

21. Вопрос:
Что такое Pub/Sub в Redis? Приведите пример.

Ответ:
Pub/Sub — парадигма обмена сообщениями, где издатели отправляют сообщения в каналы, а подписчики получают их.
Команды: SUBSCRIBE channel, PUBLISH channel message.
Пример: уведомления в реальном времени (например, обновление ленты новостей). Важно: сообщения не сохраняются — если подписчик не в сети, он их не получит.

22. Вопрос:
Как Redis поддерживает кэширование? Какие стратегии часто используют?

Ответ:
Redis идеален для кэша благодаря скорости. Распространённые стратегии:

  • Cache‑Aside (Lazy Loading) — приложение проверяет Redis, если нет — загружает из БД и кладёт в Redis.
  • Write-Through — данные пишутся одновременно в БД и Redis.
  • Write-Behind — данные сначала в Redis, асинхронно в БД.
    TTL ключей управляет актуальностью.

23. Вопрос:
Как работает Redis Persistence при использовании AOF с параметром appendfsync?

Ответ:
Параметр appendfsync определяет, как часто fsync вызывается для записи буфера AOF на диск:

  • always — fsync после каждой команды; максимальная сохранность, низкая скорость.
  • everysec — fsync раз в секунду; баланс (потеря до секунды).
  • no — fsync не инициируется Redis, полагается на ОС; высокая скорость, риск потери последних данных.

24. Вопрос:
Что такое Redis Modules? Приведите примеры популярных модулей.

Ответ:
Redis Modules — динамические библиотеки, расширяющие функциональность Redis.
Примеры:

  • RediSearch — полнотекстовый поиск и вторичные индексы.
  • RedisJSON — работа с JSON документами.
  • RedisTimeSeries — хранение и анализ временных рядов.
  • RedisGraph — графовая БД на основе проперти-графов.
  • RedisBloom — структуры данных Bloom Filter, Cuckoo Filter и др.

25. Вопрос:
Какие лучшие практики безопасности Redis?

Ответ:

  • Не запускать Redis от суперпользователя.
  • Установить пароль на подключение (requirepass).
  • Переименовать/заблокировать опасные команды (FLUSHALL, KEYS, CONFIG) через rename-command.
  • Использовать изоляцию сети: брандмауэр, привязка к localhost (bind 127.0.0.1), отключение публичного доступа.
  • Включить TLS-шифрование (Redis 6+).
  • Регулярно обновлять версию Redis.
  • Использовать отдельные экземпляры для разных приложений/окружений.

Страховка на собеседовании

Знание есть, но стресс мешает?
Бесплатное сообщество для прокачки карьеры в IT

Подпишись на https://t.me/IT_Interview_Partner_Bot

Подпишись на
https://t.me/LyakhovEugene