Цены кешируют с ограниченным TTL и инвалидируют при изменении, а при оформлении заказа проверяют актуальные условия. Одновременный cache miss может вызвать лавину одинаковых запросов к БД.
Как следует кэшировать цены товаров и какой риск возникает при одновременном cache miss?
Цены кешируют с ограниченным TTL и инвалидируют при изменении, а при оформлении заказа проверяют актуальные условия. Одновременный cache miss может вызвать лавину одинаковых запросов к БД.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Цены кешируют с ограниченным TTL и инвалидируют при изменении, а при оформлении заказа проверяют актуальные условия. Одновременный cache miss может вызвать лавину одинаковых запросов к БД.
Ключ должен учитывать товар и все факторы цены: валюту, регион, вариант и, если нужно, сегмент покупателя. Нельзя отдавать персональную цену по общему ключу.
Против cache stampede используют объединение запросов на один ключ, распределённую координацию пересчёта и разброс TTL. Устаревшую цену можно показать лишь в рамках явно допустимой политики; при оплате фиксируют проверенный ценовой snapshot. Для частых обновлений применяют события инвалидирования и защиту от записи старой версии поверх новой.