когда прилетает AJAX-запрос на наш фронтенд Ngnix, у Ngnix стоит модуль, который умеет работать с memcached, т.е. мы сначала запрашиваем данные в memcached по ключу, и если данные есть (а там хранится JSON у нас для продуктов), то мы сразу же возвращаем этот JSON. Это работает очень быстро.
Если данных нет, наш запрос проксируется на PHP и там у нас две ситуации — карточка товара может лежать в Redis-е, также в виде JSON, тогда мы берем из Redis-а, сохраняем в memcached и отдаем ее дальше клиенту.
Если у нас нет ни там, ни там — ни в Redis-е, ни в memcached, мы запрашиваем нашу карточку товара из MySQL, сохраняем ее в Redis, дублируем эти данные в memcached и так же возвращаем. При следующих запросах наши карточки товаров выдаются уже напрямую из memcached.