Задать вопрос

Как правильно организовать кэширование, при множестве параллельных запросов?

Классический пример кода, получения и записи кэша.
if ( ! $data = Cache::get('key') )
{   
   ..................
   Cache::set('key', $value, $time);    
}

Как разрешить ситуацию, когда несколько процессов получают информацию, что кэш устарел или еще не создавался?
Если, например, использовать семафоры(мютексы) в условии if, то получается, что один запрос / процесс делает кэш, а остальные его ждут. Если кэш создается не слишком быстро, то это вызовет подвисание всех запросов. Или такая практика вполне корректна, когда один делает, остальные висят?
  • Вопрос задан
  • 2318 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
by25
@by25
Веб-разработчик
Использовать быстрое хранилище, например Redis.
Либо прогревать кэш. Т.е. отдельный фоновый процесс обновляет кэш, а сервисы берут данные только из кэша.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽