Ответ вслух Middle Кеширование спрашивают часто обновлено

Как вы кешируете данные в сервисе

Вопрос

Как вы решаете, что и где кешировать, и как поддерживаете кеш в актуальном состоянии?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Сначала смотрю метрики: какие запросы частые и дорогие, и насколько данные допускают устаревание. Каталог товаров, настройки, агрегаты для дашборда и ответы медленных внешних API хорошие кандидаты, а остатки при оформлении и балансы нет.

Что должно прозвучать в ответе

  • Измерение: что читается часто и стоит дорого

  • Выбор уровня: HTTP/CDN, Redis, память процесса

  • Ключи: включают все параметры и пользователя или права

  • TTL как страховка, инвалидация после коммита, версионирование

  • Защита от stampede и холодного старта

  • Метрики: hit rate, задержка, размер

Что могут спросить следом

  • Что делать, если кеш недоступен?
  • Как прогреть кеш после деплоя?

Разбор

Образцовый ответ: «Сначала смотрю метрики: какие запросы частые и дорогие, и насколько данные допускают устаревание. Каталог товаров, настройки, агрегаты для дашборда и ответы медленных внешних API хорошие кандидаты, а остатки при оформлении и балансы нет. Публичное и одинаковое для всех кеширую как можно ближе к пользователю: HTTP-заголовки и CDN. Данные приложения кладу в Redis по схеме cache-aside. Ключ строю из всех параметров, влияющих на результат, включая пользователя или роль для персональных данных, плюс префикс с версией схемы. Всегда ставлю TTL как страховку, а при изменении удаляю ключ после коммита или увеличиваю версию. Для горячих ключей защищаюсь от stampede блокировкой на пересчёт и джиттером TTL. Код должен переживать недоступность Redis: идти в базу с таймаутом, а не падать. Слежу за hit rate, памятью и вытеснениями».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.