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


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

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

4 313

4 ответа:

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

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

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

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

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

обновление

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

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

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

при использовании Windows сравнение прерывается:memcache кажется, единственный доступный клиент.

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

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