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 — тогда запрос дождётся ответа кэша
