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

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

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

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

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

Похожие вопросы