1、Multi 命令用於標記一個事務塊的開始。
2、事務塊內的多條命令會按照先後順序被放進一個隊列當中,最後由 EXEC 命令原子性(atomic)地執行。
3、Discard 命令用於取消事務,放棄執行事務塊內的所有命令。
下例是一個事務由開始到執行完成:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a a
QUEUED
127.0.0.1:6379> get a
QUEUED
127.0.0.1:6379> sadd aset c c++ java
QUEUED
127.0.0.1:6379> smembers aset
QUEUED
127.0.0.1:6379> exec
1) OK
2) "a"
3) (integer) 3
4) 1) "java"
2) "c++"
3) "c"
事務由開始到取消:
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set b b
QUEUED
127.0.0.1:6379> discard
OK
4、Watch 命令用於監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。
通俗的說就是我監視一個字段或者列表什麼的,然後我在事務裏要修改這個字段,但是在我事務執行之前,這個字段或者列表被另一個客戶端修改了,那麼我這個事務就無法進行操作,因爲裏面的值已經變了,所以事務被打斷。
例子如下:
127.0.0.1:6379> watch a
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a aaaa
QUEUED
(在最後執行之前,另一個客戶端有人修改了a 的值:
127.0.0.1:6379> set a bbbbb
OK)
然後我這邊開始執行我的事務:
127.0.0.1:6379> exec
(nil)
如上結果就是watch所起到的作用。
5、Unwatch 命令用於取消 WATCH 命令對所有 key 的監視。
unwatch