Когда следует использовать Memcache вместо Memcached?

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

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

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

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

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

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

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

ОБНОВИТЬ

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

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

IMHO, это использование memcached обеспечило SERIOUS $$$, $$$ экономию на CAPEX для новых серверов и лицензий БД, а также контрактов на поддержку крупных коммерческих проектов.

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

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

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