Ich möchte memcached verwenden
http://www.danga.com/memcached/
Ich habe es durch installiert yum install memcached
Aber jetzt muss ich mich mit PHP verbinden und es gibt eine Erweiterung namens memcache und eine namens memcached? ARGH
http://us3.php.net/manual/en/book.memcache.php
http://us3.php.net/manual/en/book.memcached.php
Könnte mich hier jemand in die richtige Richtung weisen ... welches wird funktionieren?
Muss ich auch Ports öffnen, damit es funktioniert, obwohl es lokal ist? Nachdem ich es ausgeführt habe, versuche ich Telnet 127.0.0.1 11211 und bekomme eine Verbindung abgelehnt.
Antworten:
Die kurze Antwort: Entweder ist es das, wonach Sie suchen, aber meine erste Wahl wäre der Memcache (der erste, den Sie aufgelistet haben), der lediglich auf der korrekten Verwendung der Nomenklatur basiert.
Und so bin ich zu diesem Schluss gekommen:
Hier ist ein kurzer Hintergrund zu Benennungskonventionen (für Unbekannte), der die Frustration des Fragestellers erklärt: Für viele * nix-Anwendungen wird das Teil, das die Backend-Arbeit erledigt, als "Daemon" bezeichnet (denken Sie an "Service" in Windows). land), während Sie die Schnittstelle oder Client-Anwendung verwenden, um den Dämon zu steuern oder auf ihn zuzugreifen. Der Dämon wird am häufigsten als derselbe Client bezeichnet, an den der Buchstabe "d" angehängt ist. Zum Beispiel wäre "imap" ein Client, der eine Verbindung zum "imapd" -Daemon herstellt.
Diese Namenskonvention wird von memcache eindeutig eingehalten, wenn Sie die Einführung zum memcache-Modul lesen (beachten Sie den Unterschied zwischen memcache und memcached in diesem Auszug):
Die Frustration hier wird durch den Autor der PHP-Erweiterung verursacht, die falsch als memcached bezeichnet wurde , da sie denselben Namen wie der eigentliche Daemon mit dem Namen memcached hat . Beachten Sie auch , dass in der Einführung in Memcached (die PHP - Modul) , macht es erwähnt libmemcached , das ist die gemeinsame Bibliothek (oder API), die vom Modul verwendet wird , um das Memcached - Daemon zuzugreifen:
Zusammenfassend ist festzuhalten, dass beide Funktionen identisch sind, dass sie jedoch unterschiedliche Autoren haben, und dass der eine einfach angemessener benannt wird als der andere.
quelle
memcached
Unterstützt Cas-Token, zum Beispiel,memcache
nicht. Wenn Sie diese brauchen, wissen Sie, welche (schlecht benannt oder nicht) Sie auswählen müssen.Sie möchten wahrscheinlich den PHP-Client-Vergleich sehen .
Kurzfassung: Beide funktionieren, und in den meisten Fällen reicht beides völlig aus.
Zum anderen Thema: Ja, das sollten Sie können
telnet 127.0.0.1 11211
. Sehr wenige Firewalls würden localhost daran hindern, mit sich selbst zu kommunizieren. Wenn Sie keine Verbindung herstellen können, überprüfen Sie, ob memcached wirklich ausgeführt wird. Diesps auxwww | grep memcached
zeigt Ihnen auch die Befehlszeilenargumente, die zum Starten von memcached verwendet wurden. Eines der Argumente sollte eine-p 11211
andere Portnummer sein. Sieheman memcached
für die Bedeutung aller möglichen Argumente.quelle
ps auxwww | grep memcached
?Wie der Link von Nate andeutet, eignen sich beide hervorragend für die einfache Verwendung. Memcached unterstützt jedoch mehr Funktionen, mit denen Sie das meiste aus memcached herausholen können. Das Binärprotokoll reduziert die Datenmenge, die zwischen Client und Server gesendet werden muss. Mit Multigets und Multisets können Sie mehrere Elemente gleichzeitig abrufen / festlegen. Wenn Sie feststellen, dass Sie mehr Speicherplatz aus dem Memcache benötigen, ist Memcached das bessere Modul. Die Verwendung von libmemcached lässt vermuten, dass die Bibliothek selbst möglicherweise optimierter ist als die reine PHP-Version.
Memcached ist ein neueres Modul im Vergleich zu Memcache, das erst vor 8 Monaten veröffentlicht wurde. Wenn Sie auf eine ältere Version von PHP abzielen müssen, können Sie nur Memcache wirklich verwenden.
quelle
Der ältere, fehlerhaftere wird genannt,
php-memcache
weil das der passendste Name schien. Die neuere, bessere Version, die von den Leuten bei Digg unabhängig entwickelt wurde, wurde stattdessenphp-memcached
im Interesse der Disambiguierung benannt.Personen, die empfehlen würden, nur aufgrund der Richtigkeit des Namens übereinander zu wählen, haben wirklich kein Geschäft, das technische Beratung anbietet.
quelle
Nachdem ich kürzlich PHP-Memcache verwendet habe, muss ich Sie auf PHP-Memcached verweisen.
Hier sind ein paar Gründe, die mir auf den Kopf gekommen sind.
1) Es gibt kein getErrorCode () oder eine gleichwertige Methode. Wenn get () also FALSE zurückgibt, wissen Sie nicht, ob der in memcache gespeicherte Wert falsch ist oder ob ein Problem aufgetreten ist.
2) Der Hashing-Algorithmus für konsistentes Hashing scheint sich von anderen Implementierungen zu unterscheiden, z. B. den vielen Client-Bibliotheken, die aus libmemcached erstellt wurden. Wenn Sie also denselben Memcache-Cluster mit mehreren Sprachen verwenden möchten, treten wahrscheinlich Probleme auf, bei denen Sie einen Wert im PHP-Client speichern und andere Clients ihn nicht finden.
quelle
Beide haben Probleme ab heute. PECL / memcache ist alt und zuverlässig, mit wenigen Ausnahmen, in denen es veraltet ist. PECL / memcached 1.x ist bestenfalls Beta. Einige Funktionen arbeiten nicht mit Zifferntasten. Bei Verwendung von dauerhaften Verbindungen treten Verbindungsverluste auf. Einige (alle?) Werden in GitHub behoben und irgendwann in 2.x veröffentlicht, aber nicht heute. Eine ausführlichere Übersicht finden Sie unter http://brian.moonspot.net/php-memcached-issues
quelle
Ich arbeite an einem Buch "Expert PHP and MySQL". Ich habe ziemlich genau das Gleiche über die Unterschiede geschrieben. Was ich empfohlen habe, war PECL / memcached. # 1 - Es handelt sich um eine gut funktionierende C-Bibliothek mit vollem Funktionsumfang. # 2 - Wird erst kürzlich gewartet. # 3 - mehr Funktionen. Keine Abwertung von PECL / Memcache.
quelle
Ich hatte einige ziemlich schwerwiegende Probleme mit Drupal 6 und php-pecl-memcached, bei denen die Antwortzeiten um bis zu 5 ms pro Anruf verzögert wurden und eine bestimmte Site dazu veranlasste, fünfmal mehr Anrufe als vor der Umstellung auf php-pecl-memcached zu tätigen . Das Wechseln zu php-pecl-memcache behebt alle Probleme. Latenz und zusätzliche Anrufe.
Diese Antwort soll nur denjenigen helfen, die Drupal 6 und möglicherweise Drupal 7 verwenden.
quelle
Es gibt auch andere Clients für memcached, siehe http://code.google.com/p/memcached/wiki/Clients
Aus dem Internet ausschneiden und einfügen:
http://www.php.net/manual/en/intro.memcache.php
http://www.php.net/manual/en/intro.memcached.php
http://pecl.php.net/package/memcached "PHP-Erweiterung für die Schnittstelle mit über libmemcached gespeicherter Bibliothek" Diese Erweiterung verwendet die libmemcached-Bibliothek, um API für die Kommunikation mit zwischengespeicherten Servern bereitzustellen. https://github.com/andreiz/php-memcached
http://pecl.php.net/package/memcache "memcached extension" Memcached ist ein Caching-Daemon, der speziell für dynamische Webanwendungen entwickelt wurde, um die Datenbanklast durch Speichern von Objekten im Speicher zu verringern. Mit dieser Erweiterung können Sie über praktische OO- und prozedurale Schnittstellen mit Memcached arbeiten.
http://code.google.com/p/memcached/wiki/PHPClientComparison
quelle