Durch den Einsatz von In-Memory-Da­ten­ban­ken wie Memcached und Redis wird die Leistung dy­na­mi­scher und an­spruchs­vol­ler An­wen­dun­gen mit Datenbank-Anbindung erheblich ge­stei­gert. Beide Lösungen sind quell­of­fen und funk­tio­nie­ren nach ähnlichem Prinzip. Aber gerade, wenn es um die Funk­tio­nen und Ein­satz­be­rei­che geht, gibt es zwischen den beiden Caches einige Un­ter­schie­de, die man sich vorab be­wusst­ma­chen sollte.

Während Memcached vor allem auf Ein­fach­heit aus­ge­rich­tet ist, bietet Redis nämlich eine um­fang­rei­che Palette zu­sätz­li­cher Funk­tio­nen, die je nach An­wen­dungs­fall sinnvoll oder über­flüs­sig sein können. Erfahren Sie hier, was die beiden In-Memory-Da­ten­spei­cher gemeinsam haben und was sie un­ter­schei­det.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher

Memcached und Redis kurz vor­ge­stellt

Während Memcached schon seit fast 20 Jahren genutzt wird, kam Redis etwa sieben Jahre später auf den Markt. Die Ent­wick­ler von Memcached ver­folg­ten damals das Ziel, zeit­rau­ben­de Zugriffe auf Da­ten­ban­ken, die bei der Nutzung an­spruchs­vol­ler Web-An­wen­dun­gen nötig sind, zu umgehen. Mit Erfolg: Der In-Memory-Cache-Service (kurz Memcached) stellt zwi­schen­ge­spei­cher­te Elemente mithilfe von Schlüs­sel­wer­ten blitz­schnell bereit und macht so einen Fest­plat­ten­zu­griff unnötig. Die In-Memory-Datenbank Redis, kurz für Remote Dic­tion­a­ry 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 Ge­mein­sam­kei­ten?

Durch den In-Memory-Speicher von Memcached und Redis werden Daten mit einer sehr hohen Ge­schwin­dig­keit gelesen, was eine Re­ak­ti­ons­zeit im Mil­li­se­kun­den­be­reich er­mög­licht. Beide Systeme sind syn­tak­tisch einfach in der Hand­ha­bung und lassen sich ohne auf­wen­di­gen Code in eine Anwendung in­te­grie­ren. Außerdem erlauben Memcached und Redis die Auf­tei­lung von Daten auf mehrere Knoten, was die Ska­lie­rung nach oben bei wach­sen­der Da­ten­men­ge er­leich­tert. Beide Open-Source-Lösungen un­ter­stüt­zen zudem eine große Band­brei­te von Pro­to­kol­len und Pro­gram­mier­spra­chen wie Java, Python, PHP, C, C++, C#, Ja­va­Script, Node.js, Ruby, Go.

Memcached vs. Redis: Wo liegen die Un­ter­schie­de?

Obwohl Mem­cha­ched und Redis viele Ge­mein­sam­kei­ten haben, gibt es auch einige Un­ter­schie­de. Wir haben hier die wich­tigs­ten für Sie auf­ge­lis­tet.

Ar­chi­tek­tur: Memcached funk­tio­niert nach dem Multi-Thread-Prinzip und kann so mehrere Pro­zess­ker­ne auf einmal nutzen. Redis nutzt nur einen einzigen Kern, was bedeutet, dass die Engine bei kleinen Da­ten­men­gen eine bessere Leistung bietet. Beim Speichern von riesigen Da­ten­men­gen liegt Memcached jedoch vorne.

Da­ten­ty­pen: Memcached kann nur mit einfachen Zei­chen­ket­ten oder Strings von bis zu 1 MB umgehen. Redis hingegen un­ter­stützt Zei­chen­fol­gen von bis zu 512 MB sowie kom­ple­xe­re Da­ten­struk­tu­ren wie Listen, Hashes, Streams, Sets, Sorted Sets, Bitmaps und Hy­per­Log­Logs. Zudem ist Redis in der Lage, geo­gra­fi­sche Daten zu messen und zu speichern.

Da­ten­per­sis­tenz: 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 nach­ge­frag­ten Daten au­to­ma­tisch 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) wie­der­her­ge­stellt. Im letzt­ge­nann­ten Modus kann es jedoch zu einer leicht ver­lang­sam­ten Leistung kommen.

Cluster-Ma­nage­ment: Die Auf­tei­lung 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 un­ter­ein­an­der aus­tau­schen. Fällt ein Knoten-Subset aus, hat dies keinen oder einen kaum merkbaren Einfluss auf die Re­ak­ti­ons­zei­ten. In Memcached hingegen ist ein solcher Da­ten­aus­tausch gar nicht möglich.

Trans­ak­tio­nen: Beide In-Memory-Systeme nutzen atomare Befehle. Das heißt, dass ein­ge­ge­be­ne Werte ohne Ver­zö­ge­rung auf der ver­bun­de­nen Client-Seite angezeigt werden. Im Gegensatz zu Memcached lassen sich bei Redis jedoch auch Gruppen-Befehle in Form von iso­lier­ten atomaren Prozessen ausführen. Dieses Redis-Feature heißt Pipe­lining und sorgt dafür, dass Redis eine Antwort auf mehrere Befehle gleich­zei­tig geben kann.

Pub/Sub: Redis un­ter­stützt die Pub/Sub-Ar­chi­tek­tur. Das Messaging-Muster erlaubt An­wen­dun­gen, auf ef­fi­zi­en­te Weise mit­ein­an­der zu kom­mu­ni­zie­ren. Ein­ge­setzt wird diese Funktion in hoch-per­for­man­ten Chatrooms, der Live-Stream-Kom­mu­ni­ka­ti­on, Social-Media-Feeds und der Kom­mu­ni­ka­ti­on zwischen ver­schie­de­nen Servern.

Lua-Scripting: Soll Redis komplexe Kal­ku­la­tio­nen ausführen, haben Ent­wick­ler die Mög­lich­keit, Lua-Scripting zu verwenden. In das leicht­ge­wich­ti­ge Script lässt sich ohne viel Aufwand neue Logik einbauen. Dies steigert die Leistung und ver­ein­facht die Anwendung.

Memcached vs. Redis: Vergleich im Überblick

Memcached Redis
Einfach in In­stal­la­ti­on und Hand­ha­bung Einfach in In­stal­la­ti­on und Hand­ha­bung
La­tenz­zeit im Mil­li­se­kun­den­be­reich La­tenz­zeit im Mil­li­se­kun­den­be­reich
Open-Source und kom­pa­ti­bel mit gängigen Pro­gram­mier­spra­chen Open-Source und kom­pa­ti­bel mit gängigen Pro­gram­mier­spra­chen
Multi-Thread-Engine, die ideal für große Da­ten­men­gen ist Single-Thread-Engine, die ideal für kleinere Da­ten­men­gen ist
Vertikale Ska­lier­bar­keit Vertikale und ho­ri­zon­ta­le Ska­lier­bar­keit (siehe Cluster-Ma­nage­ment)
Schlüs­sel­län­ge auf 250 Zeichen begrenzt (1 MB) Un­ter­stüt­zung vieler Da­ten­ty­pen (bis zu 512 MB)
Keine Daten-Per­sis­tenz oder Aus­fall­si­cher­heit durch reines In-Memory-Speichern Wie­der­her­stel­len von Daten durch Snapshots, AOF und Speichern auf Backup-Fest­plat­te
Ideal für Caching und Sit­zungs­spei­cher Ideal für komplexe Prozesse und mehrere Verfahren, die gleich­zei­tig ablaufen sollen

Fazit

Memcached und Redis sind aus­ge­reif­te In-Memory-Da­ten­spei­cher, die sich vor allem in den Punkten un­ter­stütz­te Da­ten­for­ma­te, Cluster-Ma­nage­ment, Memory-Ma­nage­ment und Daten-Per­sis­tenz un­ter­schei­den. Welche der beiden Engines die bessere Wahl ist, hängt vom je­wei­li­gen An­wen­dungs­fall ab. Nutzen Sie Memcached bereits und brauchen Sie keine zu­sätz­li­chen Features, dann lohnt es sich unter Umständen nicht, auf Redis um­zu­stei­gen. Benötigen Sie jedoch mehr Funk­tio­nen und möchten Sie Daten besser absichern, stellt Redis eine gute Al­ter­na­ti­ve dar.

Zum Hauptmenü