следующая дилема — это организация вычислений.
Если ты пользуешься простым редисом, то вот тебе сценарий: стоит 80 телевизоров, которые показывают одно и то же почти синхронно, им приходит команда: запросите эти данные и покажите. Они приходят все почти одновременно за одним и тем же запросом.
Если у тебя нет правильного лока, то запрос вычисляется 80 раз и кладется в кеш 80 раз.
Это фантастическое расточительство, нужно делать вменяемый лок на ресурс и сигнализировать, что сейчас есть какой-то процесс, который вычисляет ответ.
Если ты сделаешь это всё через сигнлтонный процесс, который будет блокирующим образом вычислять ответы для кеша, то получишь дурную ситуацию, когда у тебя вся система свелась к одному ядру, что неправильно.
Т.е. подсистема кеширования должна с одной стороны знать, о том, что сейчас кто-то вычисляет ответ на кеш, а с другой стороны делать это без блокировки независимых ключей.
После подобного описания - очень и очень даже понятно👍