Vergleich zwischen Redis und Memcache und Auswahlmöglichkeiten

Vergleich zwischen Redis und Memcache und Auswahlmöglichkeiten

Ich verwende Redis seit Kurzem und finde es recht praktisch, bin mir aber nicht sicher, wann ich Redis und wann Memcache wählen soll, wenn ich eine In-Memory-Datenbank auswähle. Dann habe ich die folgenden relevanten Informationen gefunden, die vom Autor von Redis stammen (auf Stackoverflow).

Sie sollten sich nicht zu sehr um die Leistung kümmern. Redis ist bei kleinen Werten pro Kern schneller, aber Memcached kann mehrere Kerne mit einer einzigen ausführbaren Datei und einem TCP-Port ohne Hilfe des Clients verwenden. Außerdem ist Memcached bei großen Werten in der Größenordnung von 100.000 schneller. Redis hat sich bei großen Werten kürzlich stark verbessert (instabiler Zweig), aber Memcached ist in diesem Anwendungsfall immer noch schneller. Der Punkt hier ist: Weder das eine noch das andere wird wahrscheinlich Ihr Engpass für die Abfragen pro Sekunde sein, die sie liefern können.

Sie sollten auf die Speichernutzung achten. Für einfache Schlüssel-Wert-Paare ist Memcached speichereffizienter. Wenn Sie Redis-Hashes verwenden, ist Redis speichereffizienter. Hängt vom Anwendungsfall ab.

Sie sollten sich um Persistenz und Replikation kümmern, zwei Funktionen, die nur in Redis verfügbar sind. Selbst wenn Ihr Ziel darin besteht, einen Cache zu erstellen, ist es hilfreich, dass Ihre Daten nach einem Upgrade oder einem Neustart noch vorhanden sind.

Sie sollten sich Gedanken darüber machen, welche Art von Operationen Sie benötigen. In Redis gibt es viele komplexe Operationen. Selbst wenn man nur den Caching-Anwendungsfall betrachtet, können Sie in einer einzigen Operation oft viel mehr tun, ohne dass die Daten clientseitig verarbeitet werden müssen (manchmal sind viele I/O-Vorgänge erforderlich). Diese Operationen sind oft so schnell wie einfache GET- und SET-Operationen. Wenn Sie also nicht nur GET/SET, sondern komplexere Dinge benötigen, kann Redis sehr hilfreich sein (denken Sie an Timeline-Caching).

Ein Netizen übersetzte es wie folgt[1]:

Es besteht keine Notwendigkeit, sich zu sehr auf die Leistung zu konzentrieren. Da Redis nur einen einzigen Kern verwendet, Memcached jedoch mehrere Kerne verwenden kann , weist Redis im Vergleich im Durchschnitt eine höhere Leistung als Memcached auf, wenn auf jedem Kern kleine Daten gespeichert werden. Bei Daten über 100 KB ist die Leistung von Memcached besser als die von Redis. Obwohl Redis kürzlich für die Speicherung großer Datenmengen optimiert wurde, ist es Memcached immer noch etwas unterlegen. Abschließend lässt sich sagen, dass die Anzahl der Anfragen pro Sekunde unabhängig von der von Ihnen verwendeten Lösung kein Engpass sein wird.

Sie müssen die Speichernutzung im Auge behalten. Bei einfacher Datenspeicherung wie Schlüssel-Wert-Daten weist Memcache eine höhere Speicherauslastungsrate auf. Wenn die Hash-Struktur verwendet wird, ist der Speicherverbrauch von Redis höher. Natürlich hängt das alles vom jeweiligen Anwendungsszenario ab.

Wenn Sie auf Datenpersistenz und Master-Slave-Replikation achten müssen, verfügt nur redis über diese beiden Funktionen. Wenn Ihr Ziel darin besteht, einen Cache zu erstellen, bei dem die vorherigen Daten nach einem Upgrade oder Neustart nicht verloren gehen, können Sie nur Redis wählen.

Sie sollten sich um die Operationen kümmern, die Sie benötigen. Redis unterstützt viele komplexe Operationen und selbst wenn man nur die Speichernutzung berücksichtigt, kann man oft viel in einer einzigen Operation erledigen, ohne die Daten in den Client einlesen zu müssen (was viele IO-Operationen erfordern würde). Diese komplexen Vorgänge sind grundsätzlich so schnell wie reine GET- und POST-Vorgänge, daher spielt Redis eine große Rolle, wenn Sie mehr Vorgänge als nur GET/SET benötigen.

Die Wahl zwischen beiden hängt vom jeweiligen Anwendungsszenario ab. Wenn die zwischenzuspeichernden Daten eine einfache Struktur wie Schlüssel-Wert sind, verwende ich in meinem Projekt immer noch Memcache, das stabil und zuverlässig genug ist. Wenn eine Reihe komplexer Vorgänge wie Speichern und Sortieren erforderlich sind, ist Redis zweifellos die richtige Wahl.

Bezüglich der Unterschiede zwischen Redis und Memcache sind hier einige relevante Aussagen zur Dokumentation:

Die Unterschiede zwischen Redis und Memecache sind [2]:

1. Speichermethode:
Memecache speichert alle Daten im Speicher und stürzt nach einem Stromausfall ab. Die Daten dürfen die Speichergröße nicht überschreiten.
Ein Teil von Redis wird auf der Festplatte gespeichert, wodurch die Datenpersistenz sichergestellt und die Datenpersistenz unterstützt werden kann ( Anmerkung des Autors: Es gibt zwei Persistenzmethoden: Snapshot und AOF-Protokoll. Achten Sie bei der praktischen Anwendung besonders auf die Snapshot-Parameter der Konfigurationsdatei, da sonst die Wahrscheinlichkeit sehr hoch ist, dass der Server beim Dumping häufig vollständig ausgelastet ist .)
2. Art der Datenunterstützung:
Redis unterstützt viel mehr Daten als Memecache.
3. Verwendung unterschiedlicher zugrunde liegender Modelle:
Die neue Version von Redis erstellt direkt ihren eigenen VM-Mechanismus, da das allgemeine System Systemfunktionen aufruft, wodurch eine gewisse Zeit zum Verschieben und Anfordern verschwendet wird.
4. Unterschiedliche Betriebsumgebungen:
Derzeit unterstützt Redis offiziell nur LINUX, sodass die Unterstützung anderer Systeme nicht erforderlich ist. Auf diese Weise kann mehr Energie in die Optimierung der Systemumgebung investiert werden, obwohl ein Team von Microsoft später einen Patch dafür geschrieben hat. Aber nicht auf dem Hauptstamm

Zusammenfassend lässt sich sagen: Wählen Sie für Anwendungen mit Persistenzanforderungen oder erweiterten Anforderungen an die Datenstruktur und -verarbeitung Redis und für andere einfache Schlüssel-/Wertspeicher Memcache.

Dies ist das Ende dieses Artikels über den Vergleich zwischen Redis und Memcache und die Auswahl. Weitere relevante Vergleichsinhalte zwischen Redis und Memcache finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

<<:  Probleme beim Laden und Blockieren von JavaScript-Dateien: Fallstudie zur Leistungsoptimierung

>>:  Spezifische Methode zum Löschen des MySQL-Dienstes

Artikel empfehlen

Unterschiede zwischen MySQL CHAR und VARCHAR beim Speichern und Lesen

Einführung Kennen Sie wirklich den Unterschied zw...

Anleitung zum Zurücksetzen des MySQL/MariaDB-Root-Passworts

Vorwort Vergessene Passwörter sind ein Problem, d...

Lösung für den Fehler von 6ull beim Laden des Linux-Treibermoduls

Inhaltsverzeichnis 0x01 Das Treibermodul konnte n...

Implementierung der MySQL-Datensortierung (aufsteigend und absteigend)

Datensortierung aufsteigend, absteigend 1. Sortie...

36 Prinzipien der MySQL-Datenbankentwicklung (Zusammenfassung)

Vorwort Diese Prinzipien sind aus tatsächlichen K...

Beispiel für die Implementierung einer virtuellen Liste im WeChat Mini-Programm

Inhaltsverzeichnis Vorwort analysieren Erste Rend...

Tutorial zur MySQL-SQL-Optimierung: IN- und RANGE-Abfragen

Lassen Sie uns zunächst über die in()-Abfrage spr...

Zusammenfassung häufig verwendeter Toolfunktionen in Vue-Projekten

Inhaltsverzeichnis Vorwort 1. Benutzerdefinierter...

Implementierung der Vue-Paketgrößenoptimierung (von 1,72 M auf 94 K)

1. Hintergrund Ich habe vor Kurzem eine Website n...

Was ich beim Aufbau meines eigenen Blogs gelernt habe

<br />In einem Jahr Bloggen habe ich persönl...

Einführung in Kubernetes (k8s)

Ich wollte schon immer Kubernetes lernen, weil es...

Detailliertes Tutorial zum Herunterladen von MySQL unter Windows 10

MySQL-Versionen werden in Enterprise Edition und ...

Quickjs kapselt JavaScript-Sandbox-Details

Inhaltsverzeichnis 1. Szenario 2. Vereinfachen Si...