PHP7. Двухуровневое кеширование + форк?
Примерно такая схема:
1) Пользователь заходит -> кэша нет -> пользователь ждёт пока данные генерируются -> данные отдаются пользователю -> данные пишутся в кэш
2) Пользователь заходит -> кэш есть -> пользователь получает данные
3) Пользователь заходит -> кэш устарел -> пользователь получает устаревший кэш -> в кэш ставится флаг что началось обновление кэша -> кэш обновляется
4) Пользователь заходит -> кэш устарел -> пользователь получает устаревший кэш  -> стоит флаг что кэш сейчас обновляется, соответственно ничего не делаем 
То есть если не сильно важно на сколько свежие данные получит пользователь, то не заставлять его ждать их обновления, а отдавать те что есть сразу, а потом запускать обновление.
Очереди в редис есть, основной скрипт,  когда надо кеш обновить кидает в очередь сообщение. 
2й скрипт работает как демон, слушает очередь постоянно. Получив сообщение обновляет