Назад | Перейти на главную страницу

memcache против memcached?

Я хочу использовать memcached

http://www.danga.com/memcached/

Я установил это через yum install memcached

Но теперь мне нужно подключиться к PHP, и есть расширение с именем memcache и одно с именем memcached? ARGH

http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php

Может ли кто-нибудь указать мне здесь правильное направление .. какой из них будет работать?

Кроме того, нужно ли мне открывать какие-либо порты, чтобы он работал, даже если он локальный? После запуска я пробую telnet 127.0.0.1 11211 и получаю отказ в соединении.

Вы, наверное, захотите увидеть Сравнение клиентов PHP.

Краткая версия: они оба будут работать, и в большинстве случаев подойдет любой из них.

Что касается другой проблемы: да, вы должны уметь telnet 127.0.0.1 11211. Очень немногие брандмауэры могут блокировать соединение localhost с самим собой. Если вы не можете подключиться, убедитесь, что memcached действительно работает, выполнив ps auxwww | grep memcached, который также покажет вам аргументы командной строки, используемые для запуска memcached. Один из аргументов должен быть -p 11211 или другой номер порта. Видеть man memcached для смысла всех возможных аргументов.

Как следует из ссылки Нейта, оба отлично подходят для простого использования. Однако memcached поддерживает больше функций, позволяющих получить максимальную производительность от memcached. Бинарный протокол сокращает объем данных, необходимых для передачи между клиентом и сервером. Мультизадачи и мультинаборы позволяют вам получать / устанавливать несколько элементов одновременно. Если вы обнаружите, что вам нужно больше возможностей для работы с кэшем памяти, лучше использовать memcached. Использование libmemcached предполагает, что сама библиотека, возможно, более оптимизирована, чем версия только для PHP.

Memcached - более новый модуль по сравнению с memcache, выпущенный всего 8 месяцев назад. Если вам нужно настроить таргетинг на старую версию PHP, вы действительно можете использовать только memcache.

Короткий ответ: вы ищете любой из них, но я бы предпочел memcache (первый из перечисленных вами), чисто на основе правильного использования номенклатуры.

Вот как я пришел к такому выводу:

Вот краткий справочник по соглашениям об именах (для тех, кто не знаком), который объясняет разочарование задающего вопрос: для многих приложений * nix часть, которая выполняет внутреннюю работу, называется «демоном» (подумайте «служба» в Windows- land), а интерфейс или клиентское приложение - это то, что вы используете для управления демоном или доступа к нему. Демон чаще всего называется так же, как и клиент, с добавленной к нему буквой «d». Например, «imap» будет клиентом, который подключается к демону «imapd».

Это соглашение об именах явно соблюдается кэш памяти когда вы читаете введение в модуль memcache (обратите внимание на различие между memcache и memcached в этом отрывке):

Модуль Memcache предоставляет удобный процедурный и объектно-ориентированный интерфейс для memcached, высокоэффективного демона кэширования, который был специально разработан для уменьшения нагрузки на базу данных в динамических веб-приложениях.

Модуль Memcache также предоставляет обработчик сеанса (memcache).

Более подробную информацию о memcached можно найти на странице » http://www.danga.com/memcached/.

Разочарование здесь вызвано автором расширения PHP, имя которого было неудачным. memcached, поскольку он имеет то же имя, что и фактический демон, называемый memcached. Также обратите внимание, что в введение в memcached (модуль php), в нем упоминается libmemcached, которая является разделяемой библиотекой (или API), которая используется модулем для доступа к демону memcached:

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

Это расширение использует библиотеку libmemcached для предоставления API для связи с серверами memcached. Он также предоставляет обработчик сеанса (memcached).

Информацию о libmemcached можно найти по адресу » http://tangent.org/552/libmemcached.html.

Таким образом, оба функционально одинаковы, но у них просто разные авторы, и один просто назван более подходящим образом, чем другой.

Более старый, более глючный называется php-memcache потому что это имя казалось наиболее подходящим. Вместо этого новая, лучшая версия, независимо разработанная ребятами из Digg, была названа php-memcached в интересах устранения неоднозначности.

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

Если вы недавно использовали php-memcache, я должен указать вам на php-memcached.

Вот пара причин, которые мне не подходят ...

1) Нет getErrorCode () или аналогичного метода, поэтому, если get () возвращает FALSE, вы не будете знать, является ли это ложным значением, хранящимся в memcache, или возникла какая-то проблема.

2) Его алгоритм хеширования для согласованного хеширования, по-видимому, отличается от других реализаций, таких как многие клиентские библиотеки, построенные на основе libmemcached. Это означает, что если вы хотите использовать один и тот же кластер memcache с несколькими языками, у вас, вероятно, возникнут проблемы, когда вы сохраните значение с помощью клиента PHP, а другие клиенты не найдут его.

У обоих есть проблемы на сегодняшний день. PECL / memcache - старый и надежный, за некоторыми исключениями, когда он устарел. PECL / memcached 1.x в лучшем случае является бета-версией. Некоторые функции не работают с цифровыми клавишами, это приводит к утечке соединений при использовании постоянных соединений. Некоторые (все?) Исправляются в GitHub и будут выпущены в какой-то момент в 2.x, но не сегодня. Более подробный обзор см. http://brian.moonspot.net/php-memcached-issues

Я работаю над книгой «Эксперт по PHP и MySQL». Я написал примерно то же самое о различиях. Я рекомендовал PECL / memcached. №1 - это полнофункциональная, хорошо работающая библиотека C №2 - поддерживается совсем недавно. №3 - больше возможностей. Никакого пренебрежения к PECL / memcache.

У меня были довольно серьезные проблемы с Drupal 6 и php-pecl-memcached, из-за которых время отклика было задержано до 5 мс на вызов, что привело к тому, что один конкретный сайт создавал в 5 раз больше вызовов, чем до перехода на php-pecl-memcached . Переход на php-pecl-memcache устранил все проблемы; задержка и лишние звонки.

Этот ответ предназначен исключительно для того, чтобы помочь тем, кто использует Drupal 6 и, возможно, Drupal 7.

  • memcache - это клиент memcached (сервер)
  • libmemcached также является клиентом memcached

Есть и другие клиенты для memcached, см. http://code.google.com/p/memcached/wiki/Clients

Вырезать и вставить из Интернета:

http://www.php.net/manual/en/intro.memcache.php

  Memcache module provides handy procedural and object oriented 
  interface to memcached, highly effective caching daemon, which was 
  especially designed to decrease database load in dynamic web applications.
The Memcache module also provides a session handler (memcache).
More information about memcached can be found at » www.memcached.org 

http://www.php.net/manual/en/intro.memcached.php

   » memcached (http://www_memcached_org/) is a high-performance, distributed 
  memory object caching system, generic in nature, but intended for use in 
  speeding up dynamic web applications by alleviating database load.
  This extension uses libmemcached library to provide API for communicating with
  memcached servers. It also provides a session handler (memcached).
  Information about libmemcached can be found at 
   » tangent.org/552/libmemcached.html

http://pecl.php.net/package/memcached «Расширение PHP для взаимодействия с memcached через библиотеку libmemcached» Это расширение использует библиотеку libmemcached для предоставления API для связи с серверами memcached. https://github.com/andreiz/php-memcached

http://pecl.php.net/package/memcache «расширение memcached» Memcached - это демон кэширования, разработанный специально для динамических веб-приложений для уменьшения нагрузки на базу данных за счет сохранения объектов в памяти. Это расширение позволяет работать с memcached через удобный объектно-ориентированный и процедурный интерфейсы.

http://code.google.com/p/memcached/wiki/PHPClientComparison

                        pecl/memcache      pecl/memcached
  First Release Date      2004-06-08         2009-01-29 (beta)
  Actively Developed?     Yes                    Yes
  External Dependency     None              libmemcached