Вступить в клуб →
лёгкаявопросКэш, очереди и надёжность сервисов

Redis недоступен — сервис отвечает 500 на все запросы, хотя база жива

Профиль читается через кэш:

cached = redis.get(key)
if cached:
    return json.loads(cached)

data = load_from_db(key)
redis.setex(key, 60, json.dumps(data))
return data

Во время инцидента Redis стал недоступен. Сервис начал отвечать 500 на все запросы профиля, хотя PostgreSQL работал нормально.

Что не так с этим кодом?

  • Кэш нужно держать в памяти процесса — тогда падение Redis вообще ничего бы не сломало
  • Ошибка в порядке действий: читать нужно базу, а Redis использовать только на запись
  • Обращение к кэшу не изолировано: при его недоступности запрос должен идти в базу
  • Нужно увеличить число попыток подключения к Redis — тогда запрос дождётся ответа кэша

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела