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

Detailliertes Tutorial zur Installation von MySQL 8.0.13 (rpm) auf Centos7

yum oder rpm? Die Yum-Installationsmethode ist se...

Navicat kann keine Funktionslösungsfreigabe erstellen

Als ich zum ersten Mal eine MySQL-FUNKTION schrie...

CocosCreator Universal Framework Design Network

Inhaltsverzeichnis Vorwort WebSocket verwenden Er...

So stoppen Sie die CSS-Animation mittendrin und behalten die Haltung bei

Vorwort Ich bin einmal auf ein schwieriges Proble...

Docker richtet Port-Mapping ein, kann aber nicht auf die Lösung zugreifen

#docker ps-Check, alle Ports sind zugeordnet CONT...

Umfassende Übersicht über die verschiedenen Abhörmethoden von Vue3.0

Inhaltsverzeichnis Hörer 1.Uhreneffekt 2.Uhr 1.1 ...

Erläuterung der Anwendungsfälle von JavaScript setTimeout und setTimeinterval

Mit beiden Methoden kann ein JavaScript-Code nach...

Detaillierte Erklärung dynamisch generierter Tabellen mit Javascript

*Seite erstellen: zwei Eingabefelder und ein Butt...

Implementierungsfallcodeanalyse für dynamische und statische Trennung von Nginx

Trennung von statischer und dynamischer Dynamisch...

So verwenden Sie React-Slots

Inhaltsverzeichnis brauchen Kernidee Zwei Möglich...

CSS3-Implementierungscode für einfaches Karussellbildschneiden

Umsetzungsideen Erstellen Sie zunächst einen über...