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