Redis

Redis ist eine In-Memory Datenbank

Im Bereich Datenbanken gibt es einige „NoSQL-Datenbanken“. Redis – die Abkürzung steht für Remote Dictionary Server – ist dafür ein typisches Beispiel, es ist den so geannten Key-Value-Stores zuzurechnen. Zahlreiche Datenbanken – wie Redis auch – lassen sich mittlerweile der wachsenden „NoSQL-Gruppe“ zuordnen. Obwohl die verfügbaren Systeme sich in ihren theoretischen Grundlagen unterscheiden, zielen alle auf ähnliche Projektanforderungen im Hinblick auf Skalierbarkeit, verteilte Datenhaltung und flexible Speichermodelle für Dateninhalte. NoSQL-Datenbanken wie Redis kann man in vier Gruppen einteilen: Auf der einen Seite Key-Value-Stores und spaltenorientierte Datenbanken, andererseites dokumentenorientierte Datenbanken und Graphendatenbanken.

Die einfachste Form stellen die Key-Value-Stores dar, die die zu speichernden Daten immer nur in Form eines Key-Value-Paars ablegen. Der Schlüssel verweist dabei auf einen Wert. Die Einfachheit, die sich im Prinzip nicht wesentlich von einer Ablage in Betriebssystemdateien unterscheidet und die seit vielen Jahren in Embedded-Datenbanken zur Verfügung steht, lässt sich nun auch über „stand alone“ NoSQL-Datenbanken einsetzen.

Möchte man die Anwendungsgebiete für Key-Value-Datenbanken wie Redis in Erfahrung bringen, orientiert man sich am besten direkt am Titel „Key-Value“. Wenn es um die Ablage und Abfrage von Daten in immer derselben Form geht – nämlich „Speichere einen Datensatz zu einer bestimmten ID“ beziehungsweise „Lese exakt diesen Datensatz zur jeweiligen ID“, ohne dass der Datensatz noch komplex mit anderen Daten verbunden werden soll — und die Anzahl solcher Operationen hoch werden kann, sollten Nutzer sich für Key-Value-Datenbanken entscheiden. Ein Beispiel ist die Sessionverwaltung in einem Websystem. Über einen Key hinterlegt man den aktuellen Zustand einer Websession und kann ihn dadurch bei späteren Zugriffen auslesen und überschreiben.

Redis eignet sich besonders für große Datenmengen

Die Einfachheit des Datenmodells erleichtert die Skalierbarkeit dieser Systeme, sodass das bei großen Datenmengen das Hauptargument für den Einsatz von Key-Value-Datenbanken ist.

Redis ist ein Open-Source-Projekt, das seit 2010 zusammen mit seinem „Erfinder“ Salvatore Sanfilippo im Hause VMware entwickelt wird. Redis ist eine in C implementierte „single-threaded“ In-Memory-Datenbank. Redis verfügt über Ähnlichkeit mit einem Memory-Caching-System Memcached, bietet aber mehr als Memcached, nämlich nicht allein die Speicherung von Strings, sondern auch komplexere Datentypen wie Listen, Mengen und Hashes. Als In-Memory-Datenbank hält Redis alle Daten im Hauptspeicher, der über Virtual Memory erweiterbar ist, in den sich dann seltener benutzte Value-Datensätze auslagern lassen.

Im Falle eines Serverabsturzes bedeutet eine solche Hauptspeicherablage die Gefahr eines Datenverlusts. Um die Gefahr zu minimieren, bietet Redis unterschiedliche Mechanismen zum Schutz an. Durch die Einfachheit des Datenmodells gehören Projekte mit komplexen Datenstrukturen eher nicht zur Redis-Zielgruppe. Stattdessen konzentrieren sich die Redis-Entwickler auf eine schnelle Verarbeitung einfach strukturierter Daten. Wer die Performance selber testen will, findet bei Redis Benchmark-Skripte, mit denen er die auf der Webseite beschriebenen Werte auf seiner eigenen Rechnerkonfiguration verifizieren kann. Redis hat noch eine weitere Besonderheit: In der Datenbank sind Schreib- in der Regel schneller als Leseoperationen.

Weitere Informationen zum Thema Redis gibt es auf der Website der Wikipedia Enzyklopädie https://de.wikipedia.org/wiki/Redis und auf der Website des Herstellers – allerdings in englischer Sprache http://redis.io/