Unterschied zwischen APC & Memcached und wie beide für Cache-Bins verwendet werden können


7

Ich versuche den Unterschied zwischen Memcached und APC zu verstehen und warum die Leute über die Verwendung des einen oder anderen oder beider sprechen. Ich kann nicht verstehen, warum Sie nicht beide verwenden würden, weil ich dachte, sie hätten völlig unterschiedliche Rollen. Hier ist mein Verständnis:

APC

Dadurch werden Teile des PHP-Codes zwischengespeichert und im RAM gespeichert. Wenn Sie dann denselben Code erneut ausführen müssen, ist er bereits zwischengespeichert und wird blitzschnell aus dem Speicher ausgeführt.

In meinem speziellen Fall, in dem PHP-FPM ausgeführt wird, würde dies die Belastung verringern.

Memcached

(Ich werde den Unterschied zwischen den beiden PHP-Modulen ignorieren und sie für diesen Zweck als dasselbe behandeln.)

Dadurch werden DB-Objekte zwischengespeichert und im RAM gespeichert. Wenn drupal dann dasselbe Datenbankobjekt aufrufen muss, befinden sich alle Informationen dort und es muss nicht in die Datenbank verschoben werden.

In meinem speziellen Fall, in dem MySQL ausgeführt wird, würde dies die Belastung verringern.

Drupal-Cache-Bins

In Drupal Stack Exchange gibt es eine Reihe von Fragen zu Caching und Cache-Bins, in denen APC & memcached erwähnt werden:

Einige der wirklich informativen Fragen in diesem Bereich empfehlen daher, nur Memcached zu verwenden, und einige andere sagen, dass es keinen großen Unterschied gibt, beide einzuführen.

Aber ich verstehe nicht, wie das funktioniert. Zwischenspeichern sie nicht ganz andere Dinge?

Angenommen, ich habe eine Ansicht, die häufig verwendet wird. Wird die zwischengespeicherte DB-Objekte, die in der Ansicht angezeigt werden, nicht zwischengespeichert, und APC speichert den Modulcode zwischen, der sie aufruft?

Ist der Unterschied, dass Sie nur einen Cache für jeden Drupal-Cache-Bin verwenden können, können Sie entweder DB-Objekte oder PHP-Code zwischenspeichern und in der Praxis weisen die meisten Drupal-Cache-Bins entweder einen geringen Leistungsunterschied zwischen den beiden auf oder sind zu groß, um alle zwischenzuspeichern Ist das PHP-Zwischenspeichern von DB-Objekten die einzig sinnvolle Option?

(Und deshalb schlagen die meisten Leute Memcache als Standard-Cache-Bin-Option vor, dh $conf['cache_default_class'] = 'MemCacheDrupal';)


Sie sind nicht vergleichbar - APC ist ein Opcode-Cache (speichert die Ergebnisse von Funktionsaufrufen zwischen, um die Codeausführung zu beschleunigen). Memcache oder Redis oder ein beliebiger speicherinterner Datenspeicher, den Sie hier ersetzen möchten, wird als Cache für die Daten Ihrer Site verwendet. Äpfel und Orangen wirklich. Wie bei jeder Technologie, "welche soll ich verwenden?" kann nur von Ihnen beantwortet werden, nachdem Sie deren Nutzung auf Ihrem Server mit Ihrer App und Ihrer erwarteten Auslastung verglichen haben. Unter stackoverflow.com/questions/815041/… finden Sie allgemeine Hinweise zu diesen beiden
Clive

1
Übrigens ist der vorherige Kommentar stark vereinfacht (APC kann beispielsweise als Datenspeicher-Cache verwendet werden, ist dies jedoch im Allgemeinen nicht der Fall). Ich würde empfehlen, so viel wie möglich über beide Arten von Cache zu lesen, um zu verstehen, ob sie für Sie nützlich sind
Clive

Ich habe nur versucht zu verstehen, warum in vielen Fragen über die Entscheidung zwischen APC & memcached gesprochen wird. Wenn sie beide völlig unterschiedlich sind, warum hätten sie dann nicht beide einen Platz im selben Drupal-Projekt, um ihre unterschiedlichen Stärken abzudecken? Vermutlich erhalten Sie einen völlig anderen Cache, wenn Sie denselben Cache-Bin so einstellen, dass er von APC abgedeckt wird, im Gegensatz zu memcached? (Und abhängig von Ihrer Website-Nutzung und Struktur ist eine besser für Sie)
Dominic Woodman

1
@DominicWoodman Das APC-Modul für Drupal führt kein Op-Code-Caching durch. Es ist ein alternatives Cache-Back-End, das den APC-Benutzer-Cache verwendet.
mpdonadio

Ich denke auch, dass dies ein Trottel ist.
mpdonadio

Antworten:


2

APCu
teilt den Cache nicht mit anderen Servern, ist jedoch schneller.

Memcached
Kann mit anderen Servern geteilt werden und ist langsamer.

Wenn Sie zwei oder mehr Webserver (Apache / Nginx) für dieselbe Drupal-Site haben, möchten Sie Memcached. Wenn Sie auf einem einzelnen Computer ausgeführt werden, ist APCu am schnellsten. Sie möchten, dass OPcache aktiviert wird, egal was passiert .

LCache ist ein Modul zur Behebung von Problemen bei der Verwendung von APCu in einer Umgebung mit zwei oder mehr Webservern.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.