Redis gegen Memcache

7

Ich bin ein bisschen neu in Memcache und Redis und ich versuche den Unterschied zwischen den beiden und dem, was jeder tatsächlich ist, zu verstehen.

Wie mir erklärt wurde, ist Memcache eine Datenbank-Caching-Lösung. Daten aus häufig ausgeführten Abfragen werden zwischengespeichert, um zu einem späteren Zeitpunkt wiederverwendet zu werden, wodurch die Antwortzeit verkürzt wird. Ist das eine genaue Beschreibung?

Was ist mit Redis? Funktioniert das ähnlich? Mit anderen Worten, speichert es Daten zwischen, die es von einer Backend-Datenbank empfängt? Ich lese immer wieder, dass Redis eine wichtige Wertspeicherlösung ist, die für mich eher nach einem Ersatz für einen Datenbankserver als nach einer Datenbank-Caching-Lösung klingt.

Jede Hilfe, um zu verstehen, was jeder ist und was die Unterschiede sind, wäre sehr dankbar.

Danke Brad

Brad
quelle

Antworten:

2

Es gibt wirklich einen entscheidenden Unterschied zwischen den beiden.

  • Redis = Schlüssel- / Wert-Caching
  • Memcached = Objekt-Caching

Beide können manipuliert werden, um alles zwischenzuspeichern, was Sie auf sie werfen möchten. Das ultimative Ziel eines dieser und vieler ähnlicher Systeme besteht darin, einen verteilten In-Memory-Cache bereitzustellen, in dem alle Daten, auf die Sie zugreifen müssen, schneller gespeichert werden können. Dadurch wird die Datenbank im Wesentlichen in ein einfaches Datenrepository für die dauerhafte und langfristige Speicherung verwiesen, während der speicherinterne Cache-Mechanismus so viele Daten wie möglich und machbar an das Front-End des Stapels auslagert und verschiebt, wodurch die Latenz und die Zeit zum Abrufen der Daten verringert werden Daten.

Wie Sie hervorheben, ist Redis eigentlich nur für das Zwischenspeichern von Schlüsseln und Werten gedacht, aber ich habe schon ganze Objekte gesehen, die zuvor gespeichert wurden. Es eignet sich jedoch gut zur Verbesserung der Datenbankleistung.

Memcached ist etwas flexibler, da es so ziemlich alles speichern kann, was Sie wollen. Es ist auch einer der Top-Konkurrenten für jede Cache-Anwendung mit verteiltem Speicher. Es gibt auch andere Systeme, die dies tun.

In jedem Fall muss Software geschrieben werden, um einen dieser beiden Caches zu laden. Einige vorhandene Software kann für jeden Zweck vorhanden sein, den Sie sich vorstellen, z. B. zum Laden einer Tabelle in den Speicher. Diese sind jedoch für jeden Fall spezifisch.

Brent Pabst
quelle
3
Diese Antwort ist nicht korrekt. Es gibt praktisch nichts, was zwischengespeicherte Angebote redis nicht. Redis ist flexibler und nicht umgekehrt.
Carl Zulauf
3
Diese Antwort ist falsch. Redis ist mehr als ein Cache-Dienst. Es ist ein vollwertiger Datenstruktur-Server, der mit Warteschlangen, Listen, Karten, Ordnungszahlen usw. umgehen kann. Es verfügt über leistungsstarke Haltbarkeitskonfigurationen und kann je nach Anwendungsfall als primäre Datenbank verwendet werden. Außerdem ist es der häufigste Cache-Anwendungsfall.
Alexander Jardim
memcahced hat meiner Meinung nach fast nichts mit dem Speichern von Objekten zu tun - stimmt zu, der Client kann Objekte speichern, aber der Kern hat nicht viel mehr als eine Folge von Bytes. Art von 'technischem Marketing'
Jacek Cz
11

Memcached ist ein speicherinterner Schlüssel- / Wertspeicher. Redis kann auf diese Weise verwendet werden, ist aber viel viel mehr.

Möglichkeiten, wie Memcached und Redis ähnlich sind

Beide können Datenbankergebnisse oder alles andere, was Sie zwischenspeichern möchten, zwischenspeichern.

Beide können einfache Zeichenfolgenwerte für einen Schlüssel speichern. Eine frühere Antwort besagt, dass memcached flexibler ist, und dies ist falsch. Das Speichern von "was auch immer Sie wollen" in memcached umfasst das Aufnehmen von Objekten und das Serialisieren / Marshalling in Zeichenfolgen. Redis unterstützt dies ebenso gut. Redis ist im Allgemeinen flexibler, selbst wenn Sie Ihre serialisierten Objekte speichern, da der Standardmaximalwert viel größer ist (1 MB gegenüber 512 MB).

Beide speichern Werte im Arbeitsspeicher und sind extrem schnell und effizient. Oft wird die Netzwerkbandbreite oder die Speicher-E / A ohne hohe CPU-Auslastung überlastet. Beide sind hoch skalierbar. Für beide gibt es großartige Tools für die Verwaltung und Überwachung. Für beide gibt es kommerzielle Clusterlösungen. Ab Version 3.0 bietet redis integrierte Clustering-Unterstützung, die memcached nicht bietet.

Praktisch jeder Anwendungsfall für Memcached kann durch Redis gleich gut, manchmal sogar besser gelöst werden. Memcached ist eine fantastische Software, aber sowohl ihre Funktionen als auch ihre Stärken sind zu einer Teilmenge von Redis geworden.

Das Redis Superset

Wo sie sich unterscheiden, liegt in der großen Anzahl zusätzlicher Funktionen, die redis bietet, und den zusätzlichen Anwendungsfällen, die diese Funktionen ermöglichen.

Redis ist mehr als ein Schlüssel- / Wertspeicher. Es ist ein speicherinterner Datenstruktur-Server. Schlüsseln können einfache Zeichenfolgen zugewiesen werden, wie in Memcached, aber sie können auch Hashes, Listen, Sets oder sortierte Sets speichern. Diese zusätzlichen Datentypen sind effizient und optimiert. Viele Befehle nutzen sie , um Zugriffsmuster zu ermöglichen, die ein einfacher Schlüssel- / Wertspeicher nicht bietet.

Redis bietet standardmäßig integrierte und integrierte Persistenz . Dies bedeutet, dass redis standardmäßig eine echte Datenbank ist und kein einfacher flüchtiger Cache wie memcached. Ihre Daten werden beim Neustart angezeigt. Es gibt viele einfache Verwaltungsoptionen, mit denen Sie die Persistenz optimieren können, um Ihren Anwendungsfall optimal zu lösen, oder sie deaktivieren können, wenn Sie nur einen flüchtigen Cache benötigen.

Redis bietet Pub / Sub (Publish / Subscribe) an. Auf diese Weise können Sie Kanäle erstellen und von einem oder mehreren Clients abonniert werden. Dies ermöglicht einen effizienten Hochgeschwindigkeits-Echtzeit-Kommunikationsmechanismus. Dies kann eine großartige Lösung für die Kommunikation zwischen Prozessen, Anwendungen oder Servern sein.

Redis bietet Unterstützung für Lua-Skripte . Auf diese Weise können Sie alle möglichen neuen Dinge tun. Ein wichtiges Beispiel wäre die atomare Ausführung mehrerer abhängiger Redis-Befehle und ein einziger Aufruf von Redis. Lua-Skripte sind einfach zu erlernen und die Skripte werden effizient und atomar ausgeführt.

Fazit

Sofern Ihr Projekt nicht bereits memcached verwendet oder Ihre Organisation erhebliche Investitionen in memcached tätigt, sollten Sie es nicht verwenden. Redis Rivalen haben sich in ihrem eigenen Spiel eingemischt und ermöglichen eine ganze Welt neuer. Auch wenn Ihr Problem von beiden Tools gleichermaßen gelöst werden kann, wählen Sie das Tool, das mehr Flexibilität für Probleme bietet, die Sie noch nicht vorhersehen können: Redis. Sie wählen auch das Tool aus, das aktiver entwickelt und gewartet wird und das schneller verbessert wird. Memcached geht nirgendwo hin und sollte es auch nicht, aber es ist schwierig, dafür einzutreten, dass es in etwas Neuem verwendet wird, es sei denn, Sie verfügen über erhebliche Kenntnisse oder Infrastrukturinvestitionen in memcached.

Wenn Sie bereits memcached verwenden, kann der Wechsel zu redis eine Menge Arbeit für wenig bis gar keinen Gewinn sein. Bewerten Sie redis genau und entscheiden Sie für Ihre Situation, ob die Kosten für den Wechsel die Vorteile überwiegen. Wenn dies der Fall ist, bleiben Sie bei memcached. Es ist immer noch eine großartige, stabile, gehärtete Software.

Carl Zulauf
quelle