redis watch multi exec 关系
生活随笔
收集整理的這篇文章主要介紹了
redis watch multi exec 关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
EXEC
執行所有事務塊內的命令。
假如某個(或某些) key 正處于?WATCH?命令的監視之下,且事務塊中有和這個(或這些) key 相關的命令,那么EXEC?命令只在這個(或這些) key 沒有被其他命令所改動的情況下執行并生效,否則該事務被打斷(abort)。
返回值:"111"
127.0.0.1:6379> watch key
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set key 222
QUEUED
127.0.0.1:6379> exec
1) OK
127.0.0.1:6379> get key
"222"
127.0.0.1:6379> # 監視 key ,且事務被打斷127.0.0.1:6379> set key 222
QUEUED
127.0.0.1:6379> exec
1) OK
127.0.0.1:6379> get key
"222"
127.0.0.1:6379> watch key
OK
127.0.0.1:6379> set key 333
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set key 444
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get key
"333"
------------------
在同一個客戶端下 只要在watch之后,multi執行之前改變key的值,則將以改變后的值為當前的key值,之后事務中執行關于改變key值的操作將不再生效.
在不同客戶端下,例如在a客戶端執行watch key 然后執行multi .這時在b客戶端下重新set key 值,再回到a客戶端,也重新設置另一個set key 值,這時exec后將返回為空值,最終key值為b客戶端下設定的值.
理論上來說將會以a客戶端在事務中最后設置的值為最終值,但是a客戶端會認為b客戶端在multi之前執行的值,此后a客戶端執行便返回為空.
轉載于:https://www.cnblogs.com/dantes91/p/4901598.html
總結
以上是生活随笔為你收集整理的redis watch multi exec 关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国寿安鑫盈360天和廊坊银行友e盈181
- 下一篇: 支付宝蚂蚁会员等级是怎么分的?