Вопрос: memcache vs 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, и я получаю отказ в соединении.


71
2017-09-08 15:27


Источник


Если вы сейчас смотрите на этот вопрос, помните, что принятый ответ неправильно, Выбор решения, основанного исключительно на названии, опасен, особенно когда один с лучшим именем является худшим проектом. Дополнительные сведения см. В других ответах. - tylerl
@thanksyo, пожалуйста, снимите флажок, который вы проверили. Это просто путает больше людей, приезжающих сюда поздно. Тем временем я отклонил неверный ответ и предложил другим сделать то же самое до тех пор, пока благодарение не опустится, чтобы отменить его. - joedevon
Также stackoverflow.com/q/1442411/632951 - Pacerier


Ответы:


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

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

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

Это соглашение об именовании явно соблюдается Memcache когда вы читаете введение в модуль 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,

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


24
2017-09-08 16:16



Является ли название проекта действительно подходящей причиной для выбора одной реализации над другой? - David Pashley
Дэвид: Не совсем ... но это, безусловно, достаточно, чтобы оставить конкретную реализацию до последнего в моем тестировании, тем самым эффективно отдавая предпочтение другим. Я, скорее всего, по-прежнему буду тестировать все доступные реализации, но технические недостатки в описаниях программного обеспечения автором, как правило, заставляют меня задуматься о том, какие технические недостатки могут лежать в программном обеспечении. Однако я прочитал ваш комментарий о реальном программном обеспечении, поэтому я также дал вам ответ на ваш ответ. :-) - Jessica McKinnon
Я никогда не думал, что «d» в memcached означает deamon, но для обозначения причастия прошлого глагола. Кроме того, вы не могли бы назвать новый интерфейс «memcache», поскольку он уже был с этим именем. - GetFree
Количество ошибок и активно ли развивается расширение гораздо больше важнее, чем быть анальным с проблемой d. Серьезно, вы даже не должны думать о том, чтобы тестировать последнее расширение из-за чего-то подобного, это совершенно не так - Fake51
Erm, оба не функционально то же самое: memcached поддерживает токены, например, memcache не делает. Если вам это нужно, вы знаете, кого (плохо названного или нет) выбрать. - Wrikken


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

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

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


55
2017-09-08 16:08



Upvote для добавления некоторых шагов устранения неполадок. - Jessica McKinnon
Это действительно четкий ответ. - danidacar
@Nate, что эквивалентно Windows ps auxwww | grep memcached? - Pacerier
@Pacerier: взгляните на superuser.com/questions/415360/..., Process Explorer - это самый простой способ найти выполняемый процесс и просмотреть его аргументы командной строки. - Nate
@Pacerier, что команда проверяет, запущен ли серверный процесс и как он был вызван. - Jasen


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

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


27
2017-09-08 17:56



Отличное объяснение! - john


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

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


21
2017-08-24 04:15





Что касается этого вопроса, вот правильный ответ: http://about.digg.com/blog/new-pecl-extension-libmemcached-released


7
2017-08-24 01:17





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

Вот несколько причин от головы.

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

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


6
2017-11-09 21:08





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


3
2018-06-24 17:26



PECL / memcached 1.x теперь стабилен; PECL / memcache 2.x ограничен; PECL / memcache 3.x очень неустойчив. - aredridel


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


2
2017-12-02 15:21