Memcached vs. Redis: Vergleich der In-Memory-Speicher
Durch den Einsatz von In-Memory-Datenbanken wie Memcached und Redis wird die Leistung dynamischer und anspruchsvoller Anwendungen mit Datenbank-Anbindung erheblich gesteigert. Beide Lösungen sind quelloffen und funktionieren nach ähnlichem Prinzip. Aber gerade, wenn es um die Funktionen und Einsatzbereiche geht, gibt es zwischen den beiden Caches einige Unterschiede, die man sich vorab bewusstmachen sollte.
Während Memcached vor allem auf Einfachheit ausgerichtet ist, bietet Redis nämlich eine umfangreiche Palette zusätzlicher Funktionen, die je nach Anwendungsfall sinnvoll oder überflüssig sein können. Erfahren Sie hier, was die beiden In-Memory-Datenspeicher gemeinsam haben und was sie unterscheidet.
- IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
- Flexibel: Maßgeschneiderte Datenbank-Lösungen ganz auf Ihre Bedürfnisse
- Rechenzentren in Deutschland: Ihre Daten sind sicher
Memcached und Redis kurz vorgestellt
Während Memcached schon seit fast 20 Jahren genutzt wird, kam Redis etwa sieben Jahre später auf den Markt. Die Entwickler von Memcached verfolgten damals das Ziel, zeitraubende Zugriffe auf Datenbanken, die bei der Nutzung anspruchsvoller Web-Anwendungen nötig sind, zu umgehen. Mit Erfolg: Der In-Memory-Cache-Service (kurz Memcached) stellt zwischengespeicherte Elemente mithilfe von Schlüsselwerten blitzschnell bereit und macht so einen Festplattenzugriff unnötig. Die In-Memory-Datenbank Redis, kurz für Remote Dictionary Server, ist nach ähnlicher Schlüssel-Werte-Struktur aufgebaut und kommt wie Memcached in Bereichen wie Web, Gaming und E-Commerce zum Einsatz.
Was sind die Gemeinsamkeiten?
Durch den In-Memory-Speicher von Memcached und Redis werden Daten mit einer sehr hohen Geschwindigkeit gelesen, was eine Reaktionszeit im Millisekundenbereich ermöglicht. Beide Systeme sind syntaktisch einfach in der Handhabung und lassen sich ohne aufwendigen Code in eine Anwendung integrieren. Außerdem erlauben Memcached und Redis die Aufteilung von Daten auf mehrere Knoten, was die Skalierung nach oben bei wachsender Datenmenge erleichtert. Beide Open-Source-Lösungen unterstützen zudem eine große Bandbreite von Protokollen und Programmiersprachen wie Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, Go.
Memcached vs. Redis: Wo liegen die Unterschiede?
Obwohl Memchached und Redis viele Gemeinsamkeiten haben, gibt es auch einige Unterschiede. Wir haben hier die wichtigsten für Sie aufgelistet.
Architektur: Memcached funktioniert nach dem Multi-Thread-Prinzip und kann so mehrere Prozesskerne auf einmal nutzen. Redis nutzt nur einen einzigen Kern, was bedeutet, dass die Engine bei kleinen Datenmengen eine bessere Leistung bietet. Beim Speichern von riesigen Datenmengen liegt Memcached jedoch vorne.
Datentypen: Memcached kann nur mit einfachen Zeichenketten oder Strings von bis zu 1 MB umgehen. Redis hingegen unterstützt Zeichenfolgen von bis zu 512 MB sowie komplexere Datenstrukturen wie Listen, Hashes, Streams, Sets, Sorted Sets, Bitmaps und HyperLogLogs. Zudem ist Redis in der Lage, geografische Daten zu messen und zu speichern.
Datenpersistenz: Redis ist kein reines In-Memory-System wie Memcached. Wenn im Memcached-Server kein Platz mehr für neue Elemente ist, werden die am wenigsten nachgefragten Daten automatisch entfernt. Diese gehen auch verloren, wenn eine Memcached-Instanz ausfällt. Bei Redis werden Daten mithilfe der „Point-In-Time“-Snapshot-Funktion oder dem AOF-Modus (Append Only File) wiederhergestellt. Im letztgenannten Modus kann es jedoch zu einer leicht verlangsamten Leistung kommen.
Cluster-Management: Die Aufteilung von Daten erfolgt bei Redis nicht nur auf der Client-Seite wie bei Memcached, sondern auch auf der Server-Seite. Die Knoten im Redis-Cluster können Daten untereinander austauschen. Fällt ein Knoten-Subset aus, hat dies keinen oder einen kaum merkbaren Einfluss auf die Reaktionszeiten. In Memcached hingegen ist ein solcher Datenaustausch gar nicht möglich.
Transaktionen: Beide In-Memory-Systeme nutzen atomare Befehle. Das heißt, dass eingegebene Werte ohne Verzögerung auf der verbundenen Client-Seite angezeigt werden. Im Gegensatz zu Memcached lassen sich bei Redis jedoch auch Gruppen-Befehle in Form von isolierten atomaren Prozessen ausführen. Dieses Redis-Feature heißt Pipelining und sorgt dafür, dass Redis eine Antwort auf mehrere Befehle gleichzeitig geben kann.
Pub/Sub: Redis unterstützt die Pub/Sub-Architektur. Das Messaging-Muster erlaubt Anwendungen, auf effiziente Weise miteinander zu kommunizieren. Eingesetzt wird diese Funktion in hoch-performanten Chatrooms, der Live-Stream-Kommunikation, Social-Media-Feeds und der Kommunikation zwischen verschiedenen Servern.
Lua-Scripting: Soll Redis komplexe Kalkulationen ausführen, haben Entwickler die Möglichkeit, Lua-Scripting zu verwenden. In das leichtgewichtige Script lässt sich ohne viel Aufwand neue Logik einbauen. Dies steigert die Leistung und vereinfacht die Anwendung.
Memcached vs. Redis: Vergleich im Überblick
Memcached | Redis |
---|---|
Einfach in Installation und Handhabung | Einfach in Installation und Handhabung |
Latenzzeit im Millisekundenbereich | Latenzzeit im Millisekundenbereich |
Open-Source und kompatibel mit gängigen Programmiersprachen | Open-Source und kompatibel mit gängigen Programmiersprachen |
Multi-Thread-Engine, die ideal für große Datenmengen ist | Single-Thread-Engine, die ideal für kleinere Datenmengen ist |
Vertikale Skalierbarkeit | Vertikale und horizontale Skalierbarkeit (siehe Cluster-Management) |
Schlüssellänge auf 250 Zeichen begrenzt (1 MB) | Unterstützung vieler Datentypen (bis zu 512 MB) |
Keine Daten-Persistenz oder Ausfallsicherheit durch reines In-Memory-Speichern | Wiederherstellen von Daten durch Snapshots, AOF und Speichern auf Backup-Festplatte |
Ideal für Caching und Sitzungsspeicher | Ideal für komplexe Prozesse und mehrere Verfahren, die gleichzeitig ablaufen sollen |
Fazit
Memcached und Redis sind ausgereifte In-Memory-Datenspeicher, die sich vor allem in den Punkten unterstützte Datenformate, Cluster-Management, Memory-Management und Daten-Persistenz unterscheiden. Welche der beiden Engines die bessere Wahl ist, hängt vom jeweiligen Anwendungsfall ab. Nutzen Sie Memcached bereits und brauchen Sie keine zusätzlichen Features, dann lohnt es sich unter Umständen nicht, auf Redis umzusteigen. Benötigen Sie jedoch mehr Funktionen und möchten Sie Daten besser absichern, stellt Redis eine gute Alternative dar.