Ответ
Redis (Remote Dictionary Server) — это высокопроизводительное in-memory
хранилище данных типа «ключ-значение», которое используется в качестве базы данных, кэша или брокера сообщений. Его главное преимущество — сверхнизкая задержка при операциях чтения и записи.
Основные сценарии использования:
- Кэширование: Хранение результатов "дорогих" запросов к базе данных или API для быстрого повторного доступа.
- Управление сессиями: Быстрое хранение и извлечение данных пользовательских сессий для веб-приложений.
- Очереди задач: Реализация очередей для фоновых задач (например, с использованием Celery), где важна быстрая постановка и извлечение заданий.
- Pub/Sub (Издатель-подписчик): Создание систем обмена сообщениями в реальном времени, чатов или систем уведомлений.
- Счетчики и аналитика в реальном времени: Атомарные операции, такие как
INCR
, позволяют эффективно считать события (просмотры, лайки) без блокировок.
Пример кэширования на Python с redis-py
:
import redis
import json
# Подключение к Redis
r = redis.Redis(host='localhost', port=6379, db=0)
def get_user_data(user_id: int):
cache_key = f"user:{user_id}"
# 1. Проверяем, есть ли данные в кэше
cached_data = r.get(cache_key)
if cached_data:
print("Данные получены из кэша Redis.")
return json.loads(cached_data)
else:
# 2. Если нет, получаем данные из основной БД (симуляция)
print("Кэш пуст. Загрузка из основной БД...")
db_data = {"name": "Alice", "email": f"alice{user_id}@example.com"}
# 3. Сохраняем данные в кэш на 1 час (3600 секунд)
r.setex(cache_key, 3600, json.dumps(db_data))
return db_data
# Первый вызов - данные будут загружены из "БД"
user = get_user_data(123)
# Второй вызов - данные мгновенно вернутся из кэша
user = get_user_data(123)
Благодаря своей скорости и поддержке различных структур данных (строки, списки, хеши), Redis стал стандартом для задач, требующих мгновенного отклика.