Memcache больше похож на распределенный объектный кеш, чем на APC или XCache, который хранит байт-код PHP в памяти, поэтому вам не придется каждый раз анализировать его. Их основные цели различны.
Например, если у вас был очень требовательный к базе данных запрос к базе данных, который часто запрашивали люди, вы можете кэшировать полученный объект в memcache и затем обращаться к нему, а не повторять этот запрос постоянно.
APC и XCache имеют аналогичные функции кэширования объектов, но вы ограничены хост-машиной. Что если вы хотите, чтобы 10 разных серверов имели доступ к этому одному объекту без необходимости повторного выполнения запроса для каждого сервера? Вы просто перенаправили бы их на свой сервер memcache и уходите. Вы по-прежнему получаете выгоду, если у вас есть только один сервер, потому что использование memcache поможет вам масштабироваться в будущем, если вам нужно разветвляться на большее количество блоков.
Главное, что нужно учитывать, если вы думаете, что ваше приложение будет нуждаться в масштабировании. У Memcache больше издержек, поскольку для доступа к нему нужно использовать TCP-соединение, а не просто вызов функции для общих объектов APC / Xcache.
Однако Memcache имеет следующие преимущества:
- Быстрее, чем диск или повторный запрос.
- Масштабируется на несколько серверов.
- Работает со многими разными языками, ваши объекты не привязаны только к PHP + APC / Xcache.
- Все процессы / языки имеют доступ к одним и тем же объектам, поэтому вам не нужно беспокоиться о том, имеют ли дочерние процессы PHP пустой кэш объектов или нет. Это может быть не так уж сложно, если вы используете PHP-FPM.
В большинстве случаев я бы рекомендовал кэшировать ваши объекты в memcache, поскольку это не намного сложнее и более гибко в будущем.
Имейте в виду, что это только в отношении объектов кэширования. Memcache NOT не имеет каких-либо функций ускорения байт-кода или PHP, поэтому я буду запускать его параллельно с APC или Xcache