Login
Newsletter
Werbung

Do, 20. September 2012, 15:00

Redis – Mehr als ein Key-Value-Store

Einer der populäreren Vertreter der aktuellen Generation der »NoSQL«-Datenbanken ist sicherlich Redis. Dabei fällt in Kombination mit diesem Key-Value-Store gerne das Wort »schnell«. Redis ist in der Tat schnell, hat aber noch eine ganze Menge mehr zu bieten als bloße Geschwindigkeit.

Die Datenbank ist nämlich kein simples Key-Value-Store, da als Values auch komplexere Datentypen möglich sind, dazu später mehr im Detail. Des Weiteren kann bei Redis die Geschwindigkeit zugunsten der Datenpersistenz feingranular eingestellt werden. Zusätzlich bietet Redis noch einen einfach zu handhabenden Publish-Subscribe-Modus, auch dazu später mehr. Ein weiterer Punkt, der zur Popularität beiträgt ist, dass es für eine Vielzahl von Programmiersprachen Anbindungen an die Datenbank gibt. Und zum Schluss sei noch erwähnt, dass Redis sehr aktiv entwickelt wird und eine sehr gute und umfangreiche Dokumentation besitzt.

Was ist ein Key-Value-Store?

Bevor auf Redis an sich eingegangen wird, vorab noch ein kurzer Exkurs, was ein Key-Value-Store eigentlich ist. Frei übersetzt bedeutet dies so viel wie »Speichern von Schlüssel-Werte-Paaren«. Was an sich nichts Besonderes ist, weil viele Programmiersprachen so etwas auch an Bord haben, in Form von Hashes, Hashtables, Dictionaries etc. – nur ohne Datenpersistenz.

Würde man ein Key-Value-Store auf eine klassische, relationale Datenbank übertragen, dann entspräche dies einer Datenbank mit einer Tabelle, welche genau zwei Spalten namens »Key« und »Value« besitzt. Nun, dieser Vergleich hinkt ein wenig, weil in den meisten Key-Value-Stores Schlüssel »alles« sind und Werte »nichts«. »Nichts« hier im Sinne von: nicht abfragbar oder durchsuchbar. Es kann immer nur der einem Schlüssel zugehörige Wert abgefragt werden, umgekehrt ist dies nicht möglich.

Was ist anders bei Redis?

Wie bereits weiter oben erwähnt, kennt Redis mehrere Datentypen als Werte außer bloße Strings, nämlich auch »Lists«, »Hashes«, »Sets« und »Ordered Sets«. Diese werden im Verlauf des Artikels noch genauer vorgestellt.

Ebenfalls wurde bereits erwähnt, dass Redis schnell ist, sehr schnell. Selbst auf durchschnittlichen Desktop-Rechnern (mit ruhendem Desktop) schafft Redis mehr als 100.000 SET-Operation (SET = Schreiben eines einfachen Schlüssel-Werte-Paars) und etwas weniger GET-Operationen (GET = Lesen eines einfachen Werts zu einem Schüssel). Das Programm belegt grundsätzlich nur einen Thread, hält aber per Voreinstellung die Datenbank primär im RAM, wodurch natürlich ein Großteil der Geschwindigkeit erklärt ist. Aber Redis kann auch so konfiguriert werden, dass die Daten persistent auf die Festplatte geschrieben werden, wobei das »Wann« des Schreibens sehr feingranular zwischen »sporadisch« bis »sofort« eingestellt werden kann. Somit kann die Datenbank individuell an die eigenen Bedürfnisse angepasst werden. Dazu später auch noch mehr.

Installation

Redis ist zwar in den Paketquellen einiger Linux-Distributionen enthalten, in der Regel aber nicht in der aktuellen (oder einer annähernd aktuellen) Version. Da die Installation aus dem Quellcode aber sehr einfach ist, ist dies der empfohlene Weg, sowohl unter Linux als auch unter Mac OS X. Windows wird offiziell nicht unterstützt, es gibt jedoch inoffizielle Portierungen.

Da Redis keine Abhängigkeiten bei der Kompilierung hat, genügt es, wenn von der Downloadseite des Projekts die aktuellste, stabile Version heruntergeladen und anschließend entpackt wird. Nach dem Wechsel in das entpackte Verzeichnis (z.B. redis-2.4.15) reicht ein einfaches make, um das Kompilieren anzustoßen. Ist dieses abgeschlossen, ist Redis prinzipiell einsatzbereit. Wer Redis systemweit installieren möchte, so dass der Datenbankserver auch beim Systemstart automatisch hochgefahren wird, der sollte einen Blick in die Datei README werfen, welche ebenfalls im entpackten Verzeichnis zu finden ist.

Dieser Artikel verwendet eine einfache, nicht systemweite Installation von Redis unter Ubuntu 10.04 LTS mit Redis-Version 2.4.15.

Redis starten

Nach der Installation kann nach dem Wechsel ins Verzeichnis src der Server mit dem Befehl redis-server gestartet werden. Per Voreinstellung läuft der Server dabei im Vordergrund und lauscht auf Port 6379 auf allen IP-Adressen. Zum »Spielen« mit dem Server empfiehlt sich die Kommandozeilen-Schnittstelle, welche durch den Aufruf von redis-cli, ebenfalls im src-Verzeichnis, geöffnet werden kann. Diese wird auch in diesem Artikel durchgehend genutzt.

Wer sich einen Eindruck von der Geschwindigkeit von Redis machen möchte, der kann, wiederum ebenfalls im src-Verzeichnis, den mitgelieferten Benchmark durch den Aufruf von redis-benchmark starten.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung