Разница между Memcache, APC, XCache и другими альтернативами, о которых я не слышал - PullRequest
21 голосов
/ 12 сентября 2010

На работе мы недавно начали разрабатывать приложение для меня "в крупном масштабе" (мы разрабатываем потенциал для обслуживания многих миллионов обращений в день). Один из старших разработчиков и системный администратор установили memcache на сервере.

Насколько я понимаю, Memcache будет хранить результаты запросов и определенные таблицы в памяти в течение X раз и сохранит все в порядке.

Недостатком memcache кажется то, что я просто не могу на всю жизнь настроить его в своей локальной среде разработки. Я следовал нескольким инструкциям о том, как скомпилировать его для себя. Большинство, если не все шаги, кажется, работают должным образом, но получают эту ошибку на PHPLoad:

 [11-Sep-2010 16:02:30] PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so' - dlopen(/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so, 9): image not found in Unknown on line 0  

Не основной вопрос, но, с одной стороны, если вам удалось скомпилировать Memcache для MAMP 1.9 на Snow Leopard, пожалуйста, дайте мне знать об этом.

Мой основной вопрос о том, в чем различия между различными технологиями веб-кэширования. Я видел упоминания о Memcache, APC и Xcache (здесь: Кэширование результатов запроса MySQL вручную в текстовый файл ), но я не знаю плюсов, минусов и различий между ними.

На мой взгляд, преимущество Memcache в том, что он был тем, кого выбрали ведущий разработчик проекта и наш системный администратор. Он имеет недостаток в том, что он полный foobar, чтобы попытаться настроить и скомпилировать на Mac. : - ^)

Любой, кого я хотел бы услышать от любого, кто может перечислить плюсы и минусы каждой (или даже одной) других технологий кэширования. Где их лучше всего использовать, как их лучше всего использовать. И так далее.

Это вся полезная информация, я думаю.

Большое спасибо за то, что уделили мне время для расширения моих знаний. - Алекс.

Ответы [ 2 ]

31 голосов
/ 23 сентября 2010

Во-первых, список кэшей кода операции для php .

Второй Memcache / MemcacheD не является кешированием кода операции. Это распределенная система кэширования памяти. Это не улучшает скорость / производительность вашего кода PHP. Может использоваться только для хранения данных.

APC, EAccelerator, XCache и другие не распространяются, то есть вы можете хранить данные только на локальном веб-сервере. Однако все они являются кэшами опкодов и могут повысить производительность вашего PHP-приложения. Большинство, кроме EAccelerator (в текущей версии), также могут хранить данные.

Обычно я выбираю APC для кэширования кода операции (по сообщениям, он будет включен в ядро ​​PHP 6). Однако, если у меня есть несколько веб-серверов для сайта, я также буду использовать MemcacheD.


Редактировать 1 Я согласен, что очень раздражает настройка APC, Memcache на MAMP. Тем не менее, существуют учебники, имеющие дело с такими.


Редактировать 2 Также в отношении лучшего Opcode Cacher для вашего приложения действительно зависит от того, какой сервер вы используете. Некоторые работают лучше на некоторых системах. Это также зависит от размера и масштаба вашего приложения, а также от того, как работают кэши.


Редактировать 3 Очень интересная статья здесь о сравнении производительности нескольких разных кэшей. (Эта статья написана в 2006 году и не должна использоваться для текущей справки)

2 голосов
/ 15 февраля 2014

APC - это кэш кода операции. Он будет хранить проанализированный PHP-код, поэтому каждый раз ваши PHP-файлы не нужно анализировать.

Memcache - это кеш данных. Он будет хранить данные в виде пары ключ-значение.

...