Redis的事務

翔之天空發表於2016-10-30


Redis 事務可以一次執行多個命令, 並且帶有以下兩個重要的保證:

事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序地執行。事務在執行的過程中,不會被其他客戶端傳送來的命令請求所打斷。

事務是一個原子操作:事務中的命令要麼全部被執行,要麼全部都不執行。

一個事務從開始到執行會經歷以下三個階段:

開始事務。

命令入隊。

執行事務。




例項

以下是一個事務的例子,它先以 MULTI 開始一個事務,然後將多個命令入隊到事務中,最後由 EXEC 命令觸發事務,一併執行事務中的所有命令:

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set tran_string"message"
QUEUED
127.0.0.1:6379> get tran_string
QUEUED
127.0.0.1:6379> sadd tran_set"abc" "bcd"
QUEUED
127.0.0.1:6379> smembers tran_set
QUEUED
127.0.0.1:6379> exec
1) OK
2) "message"
3) (integer) 2
4) 1) "bcd"
   2)"abc"

 

Redis事務命令

DISCARD 取消事務,放棄執行事務塊內的所有命令。

EXEC 執行所有事務塊內的命令。

MULTI 標記一個事務塊的開始。

UNWATCH 取消 WATCH 命令對所有 key 的監視。

WATCH key [key ...] 監視一個(或多個) key ,如果在事務執行之前這個(或這些) key 被其他命令所改動,那麼事務將被打斷。

相關文章