> Что выбрать для кэша рядом с базой данных: Redis, RabbitMQ или Kafka? (Python)

Уровень: senior · Роль: backend · Язык: Python · Категория: Технические вопросы

Компании: АФЛТСистемс

Стек: Python

> Пример ответа

Для кэша рядом с базой данных однозначно выбирайте Redis. RabbitMQ и Kafka - это брокеры сообщений, предназначенные для асинхронной передачи данных и обработки событий, а не для быстрого доступа к произвольным данным.

Redis - это in-memory хранилище структур данных, которое идеально подходит для кэширования:

  • Скорость: время ответа <1 мс, так как данные хранятся в оперативной памяти.
  • Поддержка TTL: можно автоматически удалять устаревшие записи (например, EXPIRE).
  • Простые структуры: строки, хэши, списки - всё, что нужно для кэша (например, результат запроса к БД).
  • Персистентность: опционально можно сохранять данные на диск (RDB/AOF) для восстановления после перезапуска.

Пример использования в Python с Redis:

PYTHON
import redis
import json
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
def get_user(user_id):
cache_key = f"user:{user_id}"
cached = r.get(cache_key)
if cached:
return json.loads(cached)
# Если нет в кэше - идём в БД
user = db.query(f"SELECT * FROM users WHERE id={user_id}")
r.setex(cache_key, 3600, json.dumps(user)) # TTL 1 час
return user

Почему не RabbitMQ/Kafka?

  • RabbitMQ - это очередь сообщений для гарантированной доставки задач (например, отправка email). Он не предназначен для быстрого чтения по ключу.
  • Kafka - это распределённый лог для стриминга событий (например, логирование, обработка потоков). Его задержка выше, и он не оптимизирован для случайного доступа.

Таким образом, Redis - единственный правильный выбор для кэширования рядом с базой данных.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью