Database Reference
In-Depth Information
Transaktionen
Wir haben Transaktionen bereits bei anderen Datenbanken (Postgres und
Neo4j) kennengelernt. Redis' atomische MULTI -Blockbefehle verfolgen ein ver-
gleichbares Konzept. Packt man zwei Operationen wie SET und INCR in einen
einzelnen Block, wird er entweder als Ganzes erfolgreich verarbeitet oder gar
nicht. Ein solcher Block wird niemals nur partiell verarbeitet.
Wir wollen eine weitere URL samt Kürzel einfügen und auch den Zähler inkre-
mentieren, und das alles in einer einzigen Transaktion. Wir leiten die Trans-
aktion mit dem MULTI -Befehl ein und führen sie dann mit EXEC aus.
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET prag http://pragprog.com
QUEUED
redis 127.0.0.1:6379> INCR count
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) (integer) 2
Wenn Sie MULTI nutzen, werden die Befehle (genau wie bei Postgres-Transak-
tionen) nicht ausgeführt, während Sie sie eingeben, sondern in einer Queue
festgehalten und erst zum Schluss in der eingegebenen Reihenfolge verarbei-
tet.
Ähnlich dem ROLLBACK von SQL können Sie eine Transaktion mit dem
DISCARD -Befehl anhalten. Dieser Befehl löscht die Transaktions-Queue. Im
Gegensatz zum ROLLBACK wird die Datenbank aber nicht wieder zurückge-
stellt. Vielmehr werden die Transaktionen einfach nicht ausgeführt. Der Ef-
fekt ist der gleiche, auch wenn die zugrundeliegenden Mechanismen unter-
schiedliche Konzepte nutzen (Rollback oder Stornieren der Transaktion).
Komplexe Datentypen
Bisher haben wir kein besonders komplexes Verhalten gesehen. Das Spei-
chern von String- und Integerwerten unter Schlüsseln - selbst als Transak-
tion - ist schön und gut, doch die meisten Probleme der Programmierung
und Datenspeicherung arbeiten mit vielen verschiedenen Datentypen. Die
Möglichkeit, Listen, Hashes, Sets (Mengen) und sortierte Sets zu speichern,
erklärt die Beliebtheit von Redis. Und wenn Sie die komplexen Operationen
kennengelernt haben, die Sie an ihnen vornehmen können, werden Sie sich
dem wahrscheinlich anschließen.
Diese Collection-Datentypen können eine riesige Zahl von Werten (bis zu
2^32 Elemente, also mehr als 4 Milliarden) pro Schlüssel umfassen. Das
Search WWH ::




Custom Search