redis 學習手冊之事務 transaction 操作
事務操作
概述
Redis事務讓一組命令在單個步驟中執行。
事務中有兩個屬性,這說明如下:
在一個事務中所有命令按順序執行,作為一個單一獨立的操作。
Redis事務也是原子的。原子就意味著要麼所有命令都執行,要麼都不進行處理。
但是Redis的Transactions提供的並不是嚴格的ACID的事務,在執行中伺服器宕機,那麼會有一部分命令執行了,剩下的沒執行)
Redis還提供了一個Watch功能,你可以對一個key進行Watch,然後再執行Transactions,在這過程中,如果這個Watched的值進行了修改,那麼這個Transactions會發現並拒絕執行。這個功能可以防止別人修改的資料被覆蓋。
命令
命令原型 |
時間 |
命令描述 |
返回值 |
MULTI |
O(1) |
開啟事務 |
返回OK,其他值為失敗資訊 |
EXEC |
O(1) |
提交事務 |
返回OK |
例項
#A客戶端連結redis資料庫
[[email protected] bin]# ./redis-cli -a daphne
127.0.0.1:6379>
#開始事務
127.0.0.1:6379> multi
OK
#新增執行命令
127.0.0.1:6379> set transaction1testtransaction
QUEUED
127.0.0.1:6379> get transaction1
QUEUED
127.0.0.1:6379> incr iindex
QUEUED
#提交事務
127.0.0.1:6379> exec
1) OK
2) "testtransaction"
3) (integer) 1
127.0.0.1:6379>
127.0.0.1:6379> multi
OK
127.0.0.1:6379> del transaction1
QUEUED
127.0.0.1:6379> get transaction1
QUEUED
#新增失敗的語法
127.0.0.1:6379> get1 transaction1
(error) ERR unknown command 'get1'
127.0.0.1:6379> exec
#提交事務失敗,說明keytransaction1 已經不存在了,不能get
(error) EXECABORT Transaction discardedbecause of previous errors.
127.0.0.1:6379>
您覺的有所收穫,請保持持續的關注。
您發現部落格中有的紕漏,請指正。
您有更好的建議或更好的實現方式,請賜教。([email protected])