Login
Newsletter
Werbung

Do, 20. September 2012, 15:00

Redis – Mehr als ein Key-Value-Store

Datentypen

Wie bereits weiter oben erwähnt, kennt Redis fünf verschiedene Datentypen für Werte, welche im folgenden vorgestellt werden. Für die Datenbank sind alle Werte einfach nur eine Folge von Bytes, d.h. es spielt keine Rolle, ob einfache Strings, formatierte Daten (wie JSON oder XML) oder binäre Daten geschrieben werden.

Weiterhin darf ein Wert eine maximale Länge von 512 Megabytes haben, was auch das Speichern von großen (Binär-)Dateien innerhalb eines Werts möglich macht, aber leider nicht für z.B. komplette CD-Images reicht.

Schlüssel dürfen eine Länge von enormen 231 Bytes haben und beliebige Zeichen enthalten. Es ist übrigens gängige Praxis bei der Nutzung von Redis, dass der Doppelpunkt – auch wenn er für Redis selbst keinerlei spezielle Bedeutung hat – zur Strukturierung von Schlüsseln genutzt wird. Ein Beispiel wäre z.B. user:1234:email.

Redis unterstützt keine Verschachtelung von Datentypen. So kann z.B. ein Set nicht aus Hashes oder weiteren Sets bestehen, sondern nur aus Strings.

Und zum Abschluss sei noch gesagt, dass jede Operation in Redis atomar ist, auch wenn mehrere Werte (z.B. bei einem Hash) zu einem Schlüssel geschrieben werden.

Strings

Strings sind die einfachste Form der Datentypen. Wie der Name schon sagt, stellen sie einfach nur eine Zeichenfolge dar. Die grundlegenden Befehle für Strings sind SET SCHLÜSSEL WERT und GET SCHLÜSSEL, wobei ersterer Befehl einen Schlüssel in die Datenbank schreibt, letzterer diesen abfragt:

redis 127.0.0.1:6379> SET Rhythmbox Audioplayer
OK
redis 127.0.0.1:6379> SET "Quod Libet" Audioplayer
OK
redis 127.0.0.1:6379> GET Rhythmbox
"Audioplayer"
redis 127.0.0.1:6379> GET Winamp
(nil)
redis 127.0.0.1:6379> GET "Quod Libet"
"Audioplayer"

Ist eine Schreiboperation erfolgreich, antwortet Redis mit einem einfachen OK, bei erfolgreichen Leseoperationen wird der Wert zurückgeliefert. Enthält ein Schlüssel (oder auch ein Wert) ein oder mehrere Leerzeichen, muss dieser in Anführungsstriche gesetzt werden.

Auch wenn für Redis grundsätzlich alle Werte nur Bytes sind, erkennt die Datenbank doch Integerwerte und stellt zum Erhöhen oder Reduzieren eines Werts diverse Befehle bereit:

redis 127.0.0.1:6379> SET counter 1
OK
redis 127.0.0.1:6379> GET counter
"1"
redis 127.0.0.1:6379> INCR counter
(integer) 2
redis 127.0.0.1:6379> GET counter
"2"
redis 127.0.0.1:6379> INCRBY counter 5
(integer) 7
redis 127.0.0.1:6379> DECR counter
(integer) 6
redis 127.0.0.1:6379> DECRBY counter 2
(integer) 4
redis 127.0.0.1:6379> GET counter
"4"

So lassen sich sehr einfach Zähler innerhalb der Datenbank realisieren.

Es gibt noch eine Reihe von weiteren Befehlen für Strings. Eine komplette Übersicht ist durch den Aufruf von help @string erreichbar.

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