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 Rediskomplexe 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.