====== 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 ====