1. 程式人生 > >Redis 事物

Redis 事物

解釋 批量 ren card ans 成功 是否 用法 基本

MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事務的基礎。

Multi 和 Exec


Multi:開啟一個事務,它總是返回 OK 。執行之後, 客戶端可以繼續向服務器發送任意多條命令, 這些命令不會立即被執行, 而是被放到一個隊列中, 當 EXEC 命令被調用時, 所有隊列中的命令才會被執行。

另一方面, 通過調用 DISCARD , 客戶端可以清空事務隊列, 並放棄執行事務。

下面我們試一試這兩個命令

以年齡為例:

技術分享圖片

1.開啟事物

技術分享圖片

2.修改數據

技術分享圖片

這個時候我們再查看一次年齡,發現還是25,說明事物還沒被提交前所有的修改操作都不會生效

技術分享圖片

3.提交事物

技術分享圖片

再次查看數據,事務提交後修改操作生效了

技術分享圖片

Watch


被 WATCH 的鍵會被監視,並會發覺這些鍵是否被改動過了。 如果有至少一個被監視的鍵在 EXEC 執行之前被修改了, 那麽整個事務都會被取消, EXEC 返回空多條批量回復(null multi-bulk reply)來表示事務已經失敗。

我們再來舉個例子

還是以年齡為例:

當前age是23

技術分享圖片

1.watch:監視你,接下來age這個數據只能在我這個線程裏面操作了,其他地方動了這個數據就會報警

技術分享圖片

2.開啟事物

技術分享圖片

3.這時候新開一個窗口,修改age

技術分享圖片

4.回到原先的窗口,現在數據已經被其他線程修改了,我們看下再修改還會有效麽

技術分享圖片

5.提交事務

技術分享圖片

這次的結果不是ok,說明watch監視成功了,我們再看看當前age是多少呢

技術分享圖片

這就是watch的用法

Discard


當執行 DISCARD 命令時, 事務會被放棄, 事務隊列會被清空, 並且客戶端會從事務狀態中退出:

這個命令比較簡單,這裏就不做過多的解釋了,直接舉例子了

技術分享圖片

以上就是redis事物的基本操作

Redis 事物