Когда я должен использовать Memcache вместо Memcached? - PullRequest
316 голосов
/ 18 сентября 2009

Похоже, что в PHP есть две библиотеки memcached с именами memcache и memcached . В чем разница и как вы знаете, какой использовать? Один устарел? Похоже, что memcached предлагает больше методов, поэтому я предполагаю, что это означает, что у него больше всего разработок - но для этого также требуется внешние библиотеки C / C ++ , поэтому я не уверен, что смогу его установить. 1007 *

Кажется, что memcache существует дольше, не требует дополнительных библиотек и имеет предварительно скомпилированных двоичных файлов для ровных окон! Я думаю, что это был бы лучший выбор на данный момент. Однако, будучи новичком в memcached (сервер), я не уверен, есть ли в memcached (php) некоторые супер важные функции, которые делают его дополнительным хлопотом.

Ответы [ 4 ]

245 голосов
/ 18 сентября 2009

Клиент Memcached библиотека была недавно выпущена как стабильная. Он используется digg (был разработан для digg Андреем Змиевским, теперь уже не с digg) и реализует гораздо больше протокола memcached , чем старый клиент memcache. Наиболее важные функции, которые имеет memcached:

  1. Cas токены . Это сделало мою жизнь намного проще и представляет собой простую систему предотвращения устаревших данных. Всякий раз, когда вы извлекаете что-то из кэша, вы можете получить с ним токен cas (двойное число). Вы можете использовать этот токен для сохранения обновленного объекта. Если никто не обновил значение во время работы вашего потока, обмен удастся. В противном случае был создан новый токен cas, и вам придется перезагрузить данные и снова сохранить их с новым токеном.
  2. Прочитать обратные вызовы - лучшая вещь из нарезанного хлеба. Это упростило большую часть моего кода.
  3. getDelayed () - это хорошая функция, которая может сократить время, в течение которого ваш скрипт должен ждать, пока результаты не вернутся с сервера.
  4. Хотя сервер memcached должен быть очень стабильным, он не самый быстрый. Вы можете использовать двоичный протокол вместо ASCII с более новым клиентом.
  5. Всякий раз, когда вы сохраняете сложные данные в memcached, клиент всегда выполнял сериализацию значения (что медленно), но теперь с memcached клиентом вы можете использовать igbinary . До сих пор у меня не было возможности проверить, насколько это может быть увеличение производительности.

Всех этих моментов было достаточно, чтобы я переключился на новейшего клиента и могу сказать, что он работает как шарм. Существует внешняя зависимость от библиотеки libmemcached , но, тем не менее, ее удалось установить на Ubuntu и Mac OSX, поэтому проблем пока нет.

Если вы решите перейти на более новую библиотеку, я предлагаю вам обновить ее до последней версии сервера, а также у нее есть некоторые приятные функции. Вам нужно будет установить libevent для его компиляции, но в Ubuntu особых проблем не возникало.

До сих пор я не видел, чтобы какие-либо фреймворки принимали новый клиент memcached (хотя я их не отслеживаю), но я предполагаю, что Zend скоро появится на борту.

UPDATE

Zend Framework 2 имеет адаптер для Memcached, который можно найти здесь

11 голосов
/ 31 июля 2012

При использовании Windows сравнение обрывается: memcache представляется единственным доступным клиентом.

9 голосов
/ 25 марта 2013

Это 2013 год. Забудьте о комментариях 2009 года. Точно так же, если вы работаете с серьезными нагрузками на трафик, даже не задумайтесь над тем, как справиться с мемо-кешем на базе Windows. При работе с очень крупномасштабными (более 500 интерфейсными веб-серверами) и более 20 серверными базами данных и репликантами (смесь mysql и mssql) ферма серверов memcached (12 серверов в группе) поддерживает несколько приложений OLTP большого объема, отвечающих на 25K ~ 40K mc-> получать звонки в секунду. Это те вызовы, которые НЕ должны достигнуть базы данных.

ИМХО, это использование memcached обеспечило СЕРЬЕЗНЫЕ $$$, $$$ экономии на CAPEX для новых серверов и лицензий БД, а также на контракты на поддержку крупных коммерческих проектов.

7 голосов
/ 18 сентября 2009

Memcached - более новый API, он также предоставляет memcached в качестве поставщика сеансов, что может быть полезно, если у вас есть ферма серверов.

После того, как версия все еще очень низкая 0,2, но я использовал обе, и я не столкнулся с серьезной проблемой, поэтому я бы пошел в memcached, так как она новая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...