第九節----Redis 事務
8.1 開始事務
一個事務從開始到執行會經歷以下三個階段:
- 開始事務。MULTI
- 命令入隊。EXEC
- 執行事務。
Redis的事務有幾個特點:
(1)單個命令原子性,即單個命令要麼執行,要麼就不執行,不會執行到一半就停止了。
(2)多個命令中,如果某個命令出現異常,不會進行回滾。Redis將跳過這個錯誤的命令,繼續執行下面的其它命令
開啟事務的語法:MULTI
MULTI
8.2 新增命令
在執行MULTI命令後,接著寫一些命令。可以寫個把錯誤的命令測試是不是將這些錯誤的命令忽略掉。
DEL myKey
SET myKey myValue
DEL mySet
SADD mySet valueA
SADD mySet valueA # 這裡故意將重複的元素插入到mySet中,如果忽略掉此命令,那麼mySet將只有2個元素
SADD mySet valueB
SCARD mySet #檢視mySet的個數,預期為2
8.3 執行命令
執行進棧後的所有命令,並忽略錯誤的命令。
EXEC
下面的圖片中展示了一個完整的事務執行流程。
EXEC下面的是所有命令的執行結果,在最後一行中,其結果是2,符合我們在Set集合中插入三個元素,其中有兩個元素是相同的,只成功插入了一個,所以最後Set集合的個數為2
8.4 取消事務
開始事務後,肯定也有取消事務的時候。
取消事務語法:DISCARD
MULTI #開啟事務
DEL myKey #這個事務中希望刪除myKey
DISCARD #但是突然覺得myKey還是有用的,所以就用DISCARD 取消本次事務
GET myKey #再次獲取myKey,看看是不是被刪除了。結果表明沒有被刪,說明事務被成功取消。