Что такое Redis и для чего он используется?

«Что такое Redis и для чего он используется?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Redis (Remote Dictionary Server) — это высокопроизводительное хранилище данных типа «ключ-значение» (key-value store), работающее в оперативной памяти (in-memory). Это NoSQL база данных, поддерживающая различные структуры данных.

Ключевые особенности:

  • In-memory хранение: Обеспечивает чрезвычайно высокую скорость операций чтения/записи (микросекунды).
  • Структуры данных: Поддерживает не только строки, но и списки, множества, хеши, отсортированные множества, битовые массивы.
  • Персистентность: Может асинхронно сохранять данные на диск (снимки RDB или журнал AOF).
  • Срок жизни (TTL): Можно задать время автоматического удаления ключей.
  • Масштабируемость: Поддержка репликации (master-slave) и кластеризации.

Основные сценарии использования:

  1. Кэширование: Самый частый случай. Хранение результатов тяжелых запросов к БД или вычислений.
  2. Очереди сообщений: Использование структур List или Stream для организации брокера сообщений.
  3. Хранение сессий: Быстрый доступ к данным сессии пользователя.
  4. Счетчики и рейтинги: Благодаря атомарным операциям INCR.

Пример на Python (кэширование):

import redis

# Подключение
r = redis.Redis(host='localhost', port=6379, db=0)

# Запись значения с TTL (30 секунд)
r.setex('user:100:profile', 30, '{"name": "Alice"}')

# Чтение значения
profile = r.get('user:100:profile')
print(profile)  # b'{"name": "Alice"}'