У меня есть результат запроса, который очень дорогой.Это объединение нескольких таблиц и задания по сокращению карты.
Это кэшируется в memcached
на 15 минут.Когда срок действия кеша истекает, запросы, очевидно, выполняются и кеш снова нагревается.
Но в момент истечения может возникнуть проблема thundering herd problem
.
Один из способов решения этой проблемы, который я делаю прямо сейчас, - это запустить запланированное задание, которое запускается на 14-й минуте.Но почему-то это выглядит очень субоптимальным для меня.
Другой подход, который мне нравится - это механизм nginx proxy_cache_use_stale updating;
.
Веб-сервер / машина продолжает доставлять устаревший кеш, в то время как поток срабатывает в момент истечения срока действия и обновляет кеш.
Кто-то применил это к сценарию memcached
хотя я так понимаю это стратегия на стороне клиента?
Если это выгодно, я использую Django
.