ubuntuusers.de

ubuntuusers.deWikiRedis

Redis

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

redis_logo.png Redis {en} ist eine Schlüssel-Werte-Datenbank, auf Englisch „Key Value Store“ oder kurz nur KV Store. Hier werden die Daten immer in Form von Schlüssel-Werte-Paaren gespeichert. Man kann sich die Datenbank also so vorstellen, dass darin nur eine Tabelle mit zwei Spalten existiert, nämlich einer Spalte für den Schlüssel und einer für den Wert. Als Werte akzeptiert Redis verschiedene Arten von Daten, siehe Abschnitt Datentypen.

Der Vorteil von KV Stores ist, dass diese - besonders im Vergleich zu relationalen Datenbanken wie MySQL oder PostgreSQL - sehr schnell sind. Schreibvorgänge sind in der Regel sogar schneller als Lesevorgänge. Bis zu ca. 100.000 Schreibvorgänge und ca. 80.000 Lesevorgänge pro Sekunde sind dabei auf „normaler“ Hardware möglich. Weitere Details findet man in den Benchmarks {en}.

Redis ist als Server-Client-Architektur ausgelegt, d.h. der Redis-Server läuft als Dienst im Hintergrund und kann dann per Client abgefragt werden. Redis hält die Datenbank primär im Speicher, kann diese aber auch in festgelegten Intervallen auf die Festplatte schreiben. Des Weiteren beherrscht Redis Replikation.

Installation

Redis befindet sich in den Paketquellen von Ubuntu und kann über das Paket

  • redis-server (universe, Version 1.2.0)

Wiki/Vorlagen/Installbutton/button.png

installiert werden.

Die Dokumentation kann man lokal über das Paket

  • redis-doc (universe)

Wiki/Vorlagen/Installbutton/button.png

installieren.

Des Weiteren befinden sich noch Anbindungen für Python, Perl und Ruby in den Quellen:

  • python-redis (universe)

  • libredis-perl (universe)

  • libmoneta-ruby (universe)

Damit können in der entsprechenden Programmiersprache Clients für Redis programmiert werden.

Es gibt noch eine Vielzahl von weiteren Anbindungen für andere Programmiersprachen, allerdings befindet sich diese nicht in den Ubuntu-Paketquellen.

Benutzung

In der Standardinstallation läuft Redis auf localhost und lauscht auf Port 6379. Die Einstellungen können in der Konfiguration geändert werden. Man kann sich nun mit dem Redis-Server verbinden, entweder indem man ein Programm schreibt, welches eine Anbindung an Redis besitzt oder indem man den standardmäßig mit installierten Client redis-cli im Terminal[2] benutzt.

Die allgemeine Syntax ist:

redis-cli BEFEHL 

redis-cli ist nicht interaktiv, d.h. man kann immer einen Befehl senden, bekommt dann das Ergebnis zurück und ist dann wieder am Shell-Prompt. Der Befehl

redis-cli info 

gibt z.B. den aktuellen Status des Redis-Servers aus.

Eine Übersicht über alle Befehle findet man in der Befehlsliste {en} von Redis oder, etwas verkürzt und zusammengefasst, auf dem Redis Cheatsheet {en}.

Datentypen

Redis kennt vier verschiedenen Datentypen:

  • String: Eine beliebige Zeichenfolge (z.B. Text)

  • List: Entspricht eine Array, die Elemente (=Strings) werden über einen positiven, ganzzahligen, null-basierten Index angesprochen (d.h. das erste Element der Liste hat den Index 0, das zweite 1 usw.).

  • Set: Entspricht „List", außerdem dass - eben im Gegensatz zu List - Elemente nur genau einmal vorkommen dürfen.

  • Sorted Set: Entspricht einem Set, nur dass zusätzlich der Index des Elements explizit mit angegeben wird.

Strings dürfen entweder normale Textstrings sein oder auch binäre Strings. Auf diese Weise können auch Dateien in Redis gespeichert werden. Die Länge der Schlüssel darf bis zu 1 GB betragen, so dass auch große Datenmengen pro Schlüssel gespeichert werden können. Eine ausführlichere Erläuterung der Datentype findet man auf der Seite Data Types {en}.

Konfiguration

Redis wird über die zentrale Datei /etc/redis/redis.conf konfiguriert. Zum Bearbeiten muss man diese Datei mit einem Editor mit Root-Rechten[3] öffnen. Die Datei ist sehr ausführlich kommentiert.

Eingestellt werden kann hier z.B. auf welcher IP-Adresse und auf welchem Port lauschen soll, Details zu Replikation, Passwortschutz für die Datenbank sowie in welchen Intervallen Redis die Daten auf Festplatte speichern soll.

Weiterhin kann in der Konfigurationsdatei eingestellt werden, dass Redis im sogenannten „Append-only“-Modus betrieben werden soll. Dies bedeutet, dass Redis jede Änderung in der Datenbank direkt in eine separate Datei schreibt (nicht die Datenbank selber). Dies gewährleistet - im Vergleich zum reinen asynchronen Speichern - eine höhere Datensicherheit bei einem Absturz des System, verlangsamt die Datenbank aber auch. „Append only” und asynchrones Schreiben kann kombiniert werden, die Wege schließen sich nicht aus. Nach einem Absturz wird die Datenbank aus der Datei appendonly.log rekonstruiert, so dass in der Regel kein Schreibvorgang verloren sein sollte. Um die Datei appendonly.log nicht zu groß werden zu lassen, sollte in regelmäßigen Abständen der Befehl bgwriteaof ausgeführt werden.

Replikation

Redis beherrscht Ein-Weg-Replikation („Master-Slave-Replikation“) mit Bordmitteln. Innerhalb der zuvor beschriebenen Konfigurationsdatei kann im Abschnitt "Replication" festgelegt werden, ob der Redis-Server einem anderen Server, dessen IP-Adressen und Port anzugeben ist, folgen soll. D.h. alle Änderungen dieses Redis-Server („Master”) werden auf den lokalen Redis-Server „Slave“ repliziert.

Datensicherung

Die Datei, in der Redis die Datenbank ablegt, befindet sich im Verzeichnis /var/log/redis und heißt redis-server.log. Vor der Sicherung sollte sichergestellt werden, dass sowohl alle im Speicher befindlichen Änderungen sowie der Inhalt des „Append only files“ (falls aktiviert) auf die Festplatte geschrieben werden.

Beim Rückspielen einer Sicherung ist zu beachten, dass die Datei redis-server.log dem Besitzer redis und der Gruppe redis zugeordnet sein muss.

  • Die Dokumentation {en} von Redis, welche viele Beispiele und Tipps enthält

  • Beispielanwendung {en} - es wird ein kleiner Twitter-Clone mit Redis als Datenbank „entwickelt“. Absolut lesenswert, da hier eine sehr gute Einführungen in die Strukturierungen des Datenbank-Schemas eines Key Value Stores gegeben wird.

  • The Little Redis Book {en} - freies, kurzes "Buch" zu Redis, welches einen sehr gute und kompakte Einführung bietet

  • Live-Version {en} von Redis online ausprobieren

Diese Revision wurde am 3. April 2012 20:54 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Server, Datenbank, Programmierung, Key-Value Store

Passwort vergessen?