Magento-Sitzungsspeicher: Redis vs. Memcached

10

Ich verwende ein Magento EE 1.12.2 (ebenfalls in CE 1.7.2), in dem wir Redis zum Zwischenspeichern haben ( Cm_Cache-Erweiterung, Redis v 2.2.12 ), aber wir verwenden Memcache zum Speichern von Sitzungen.

Redis wird in diesen Magento-Versionen nicht sofort unterstützt. Mein Anliegen hier ist also:

  • Lohnt es sich, den Sitzungsspeicher in Bezug auf Aufwand und Geschwindigkeitsverbesserung in Redis zu integrieren?
  • Ist Memcache nicht genauso gut oder vielleicht sogar noch besser?

In diesem Projekt haben wir große Sitzungsdateien, da wir XML-Dateien von Drittanbietern in der Sitzung speichern müssen, sodass die Optimierung des Lese- und Schreibvorgangs von Sitzungen erhebliche Auswirkungen haben kann.

Von local.xml:

<session_save><![CDATA[memcache]]></session_save>

Und:

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    [...]
</cache>
7ochem
quelle

Antworten:

11

Nach meinem Konzept ist Redis am besten:

Memcached ist ein kostenloses und Open-Source-In-Memory-Schlüsselwertspeicher-Hochleistungs-Caching-System für verteilte Speicherobjekte.

Redis ist ein vernetzter Open-Source-Datenspeicher mit Schlüsselwerten im Speicher und optionaler Haltbarkeit.

Wegen

  1. Memcached ist ein flüchtiger speicherinterner Schlüssel- / Wertspeicher. Redis kann sich wie einer verhalten (und diesen Job genauso gut erledigen wie Memcached)
  2. Die Architektur eignet sich zum schnelleren Speichern von Daten.
  3. Daten werden schneller abgerufen
  4. Standardmäßig Persistenz auf der Festplatte
  5. Werte bis zu einer Größe von 512 MB (Memcached auf 1 MB pro Schlüssel begrenzt)
  6. Eingebautes Clustering

Redis unterstützt keine LRU oder eine ähnliche Richtlinie zur Behandlung von Überlastung. Redis unterstützt kein CAS (check and set), das zur Aufrechterhaltung der Cache-Konsistenz nützlich ist. Siehe Was sind die häufigsten Ursachen für Inkonsistenzen im zwischengespeicherten Cache? (obwohl es eine SETNX-Operation gibt, die dies unnötig macht)

Geben Sie hier die Bildbeschreibung ein

Weitere Details: Stackoverflow "Memcached vs. Redis?"

Einige Details mit Redis schnellerer Datenunterstützung : Redis.io

Amit Bera
quelle
Ok, es ist ein schöner Vergleich und der Link bietet viele Informationen über Unterschiede zwischen den beiden. Aber lohnt es sich tatsächlich, wenn Sie Memcache bereits verwenden, um es in Redis zu ändern?
7ochem
Ja, es ist nur möglich, wenn Sie Redis verwenden ... Sie verwenden Redis auf Magento EE 1.12.2.be
Amit Bera
7ochem, hast du mir die Stimme gegeben?
Amit Bera
3
Toller Beitrag. hatte die gleiche Frage. mit redis jetzt. Arbeitet hervorragend in einem Geschäft, ist aber in einem anderen etwas weniger effektiv. Probieren Sie auch Memchache aus. @AmitBera können Sie memcache + apc oder redis + apc stapeln und wie würde eine local.xml dann aussehen.
Kay Int Veen
3
"Redis unterstützt keine LRU oder ähnliche Richtlinien für den Umgang mit Überlastung" - vielleicht möchten Sie dies streichen , es sei denn, Sie meinen etwas anderes. Da das OP versucht, Sitzungen anstelle des Cache nach Redis zu migrieren, ist die Räumung von Sitzungen idealerweise zeitbasiert und nicht größenbasiert, sodass LRU kein Bonus ist.
Melvyn
6

CM Redis Cache in 1.7.2 ist kein Hack, Magento hat den Code standardmäßig auf 1.8+ hinzugefügt, weil er so gut funktioniert und einfach implementiert werden kann.

Redis unterstützt die Bereitstellung von Cache und Sitzung in derselben Serverinstanz aufgrund von Datenbanken. In memcached würden Sie wahrscheinlich mehrere Instanzen von memcached starten.

Memcached bietet auch die Möglichkeit, auf die Festplatte zu schreiben. Dies kann verwendet werden, um Sitzungen nach einem Neustart des Dienstes zu speichern. Beim Schreiben auf die Festplatte kann memcached Fehler auf Ihrer Site verursachen, da es für einige Momente gesperrt wird. Redis wird dies besser handhaben, da einige andere Fragen zu diesem Stapel bereits gezeigt wurden.

Daher würde ich Redis gegenüber memcached empfehlen.

Jeroen
quelle
5

Dies ist leider keine Schwarz-Weiß-Antwort. Also, ich gebe Ihnen die Vor- und Nachteile:

Memcache:

  • Festcodiertes Datenlimit (Verwerfen Sie dieses Problem nicht, Administrationssitzungen können leicht darüber hinauswachsen.)
  • blockiert beim Speichern auf der Festplatte
  • etwas schlechtere Leistung
  • Die Magento-Erweiterung hat keine Bot-Verteidigung

Redis:

  • Sperren von Problemen in Session :: read in einigen Geschäften, die durch gleichzeitigen Zugriff auf die Sitzung verursacht werden.
  • Unterstützung für mehrere Datenbanken in einer Instanz, jedoch mit einigen Einschränkungen.
  • Die Magento-Erweiterung unterstützt die Verteidigung gegen Bots und enthält Migrationsskripte
  • Die Magento-Erweiterung unterstützt einen schnellen Komprimierungsalgorithmus
  • Aktiv gepflegte Codebasis

Wenn die Geschwindigkeit Ihr einziges Problem ist, führen Sie einfach einen Belastungstest durch. Mit einem kostenlosen Konto bei Blazemeter können Sie mit 50 virtuellen Benutzern arbeiten. Dies sollte ausreichen, um die Unterschiede zu messen.

Melvyn
quelle