Database Reference
In-Depth Information
> SET konto_b=500 -> OK
>
MULTI
-> OK
> DECRBY konto_a 300 -> QUEUED
> INCRBY konto_b 300 -> QUEUED
>
EXEC
->
1) (integer) 700
2) (integer) 800
Nun kann es allerdings immer noch passieren, dass zwischen
MULTI
und
DECRBY kon-
to_a 300
von Außen ein
SET konto_a=0
ausgeführt wird. In diesem Fall wäre der Konto-
stand nach der Transaktion -300, und könnte durch das Backendprogramm nicht abgefan-
gen werden. Dafür gibt es den Befehl
WATCH key.
Ein
key
, der vor Beginn von
MULTI
damit beobachtet wird, verhindert die Ausführung von
EXEC
, wenn während
MULTI
und
EXEC
der Wert von
key
von außen verändert wird.
> SET konto_a=1000 -> OK
> SET konto_b=500 -> OK
> WATCH konto_a -> OK
>
MULTI
-> OK
An dieser Stelle wird von einem anderen Client (dem Finanzamt?) ein
SET konto_a=0
aus-
geführt.
> DECRBY konto_a 300 -> QUEUED
> INCRBY konto_b 300 -> QUEUED
>
EXEC
-> (nil)
Das Ergebnis ist null, die Transaktion fand nicht statt. Um alle Keys wieder von der Beob-
achtung zu lösen, genügt ein
UNWATCH.
Dieser Befehl ist global, d.h. er betrifft alle Keys,
einzelne Keys können nicht mit
UNWATCH
angesprochen werden.
Persistenz
Redis speichert alle im RAM befindlichen Daten in einem einzigen File (
dump.rdb
). Das
Speichern geschieht asynchron im Hintergrund. Die Bedingungen, unter denen ein Daten-
dump vorgenommen wird, können anhand des
SAVE
-Befehls eingestellt werden. Dabei
lautet die Syntax:
SAVE seconds changed_docs
. Per Default (in der
redis.conf
) sind folgen-
de Werte vorgegeben:
save 900 1
Search WWH ::
Custom Search