Выбор ответа Middle Кеширование обновлено

Запросы к несуществующим ключам

Вопрос

Бот перебирает несуществующие id товаров. Каждый запрос промахивается мимо кеша и идёт в БД. Что поможет?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Кешировать «не найдено» коротко или фильтр Блума. Это cache penetration: несуществующих данных нет в кеше по определению.

Варианты ответа

  1. Увеличить TTL существующих ключей до суток
  2. Кешировать «не найдено» коротко или фильтр Блумаправильный ответ
  3. Перейти на write-through, чтобы кеш был полным
  4. Включить LRU вместо LFU, чтобы промахов было меньше

Разбор

Это cache penetration: несуществующих данных нет в кеше по определению. Кеширование пустого ответа на минуту или фильтр Блума (быстро отвечает «точно нет») отсекают такие запросы до БД. Плюс rate limiting для бота. TTL существующих ключей, стратегия записи и политика вытеснения не влияют на ключи, которых нет.

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

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