====== Remote Dictionary Server ======
Redis (kurz für Remote Dictionary Server) ist ein OpenSource Datenbank-System. Durch seine [[http://de.wikipedia.org/wiki/NoSQL|No-SQL]]-Beschaffenheit widerspricht es dem gängingen Konzept einer relationalen Datenbank, mit der via [[dbs:sql:start|SQL]] kommuniziert wird. Redis gehört zur Familie der [[http://de.wikipedia.org/wiki/In-Memory-Datenbank|In-Memory-Datenbanken]]. Das bedeutet, dass sich der Datenbestand im Hauptspeicher befindet.
Daten werden durch eine einfache Schlüssel-Wert-Struktur erfasst und in [[struct:hash:start|Hash-Tables]] organisiert. Somit wird ein Wert mit einem Schlüssel identifiziert. Die Datenbank funktioniert somit wie ein großes Wörterbuch.
==== Vorteile ====
Da sich alle Daten im Hauptspeicher befinden, können Zugriffe auf indizierte Daten sehr schnell erfolgen. Laut [[http://de.wikipedia.org/wiki/Redis|Wikipedia-Artikel]] können mit Redis bis zu ca. 100.000 Schreibvorgänge und ca. 80.000 Lesevorgänge pro Sekunde durchgeführt werden. Diese Werte liegen deutlich über denen gängiger relationalen Datenbanksystemen wie [[dbs:mysql:start|MySQL]]. Auch auf herkömmlicher Hardware (z.B. gängige Desktop-PCs) ist dieser Geschwindigkeitsvorteil merkbar.
==== Nachteile ====
Die Schlüssel-Wert-Architektur eignet sich prinzipiell für einfache Datenstrukturen. Für die Abbildung komplexerer Strukturen ist Redis nur bedingt geeignet; dazu müssen diese aufwändig auf die Schlüssel-Wert-Struktur abgebildet werden.
Ein größerer Nachteil liegt im Fehlen der Persistenz. Da sich alle Daten im Hauptspeicher befinden gehen sie prinzipiell verloren, wenn der Redis-Server oder das ganze System neugestartet werden. Allerdings bietet Redis die Möglichkeit den Datenbestand beispielsweise zyklisch auf die Festplatte zu sichern. Für [[http://de.wikipedia.org/wiki/ACID|ACID-konforme Systeme]] ist Redis jedoch nicht geeignet.
====== Installation ======
Redis ist OpenSource und kann auf der [[http://redis.io/download|offiziellen Projekt-Seite]] heruntergeladen werden. Im Folgenden wird die Installation auf linux-basierten Systemen mittels [[make:start|Makefile]] beschrieben.
Nachdem das Archiv heruntergeladen und entpackt wurde (z.B. nach ''/opt/redis'') kann es mittels
make all
kompiliert werden. Anschließend stehen im Verzeichnis src/ die Programme ''redis-server und redis-cli'' zur Verfügung. Um den Server bzw. CLI-Client bequem starten zu können, bietet sich die Erstellung eines Shell-Skripts an:
**/usr/sbin/redis-server**
#!/bin/bash
cd /opt/redis/src
./redis-server &
Nachdem das Skript mit
chmod +x /usr/sbin/redis-server
(als root) ausführbar gemacht wurde, kann der Redis-Server mittels ''redis-server'' gestartet bzw. mit ''killall redis-server'' beendet werden.
**/usr/sbin/redis-cli**
#!/bin/bash
cd /opt/redis/src
./redis-cli
Ebenfalls mit
chmod +x /usr/sbin/redis-cli
(als root) kann der CLI-Client ausführbar gemacht und mit ''redis-client'' gestartet werden.
Der Umgang mit dem interaktiven CLI-Client wird im kommenden Abschnitt erklärt.
====== Interaktiver Client ======
Mit ''redis-cli'' kann der interaktive CLI-Client gestartet werden. Wer sich zunächst erst an Redis ausprobieren möchte, ohne etwas zu installieren, kann [[try auf http://try.redis.io/|Try Redis]] online ausprobieren. Redis unterstützt folgende Datentypen:
==== String ====
==== List ====
==== Hash ====
==== Set ====
==== Sorted Set ====
====== Verwendung ======
==== Beispiel-Datenbank ====
==== Integration in C++ ====
==== Integration in PHP ====