Redis事務中的watch機制-從實例入手學習


場景

Redis中事務的實現流程:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/105048241

在上面學會Redis的事務的使用流程后,Redis還有一個watch機制。

Watch機制原理

使用watch監視一個或者多個key,跟蹤key的value修改情況,如果有key的value值在

事務exec執行之前被修改了,整個事務被取消。exec返回提示信息,表示事務已經失敗。

但是如果使用watch監視了一個帶過期時間的鍵,那么即使這個鍵過期了,事務仍然可以正常執行。

大多數情況下,不同的客戶端會訪問不同的鍵,相互同時競爭同一key的情況一般都很少,樂觀鎖能夠

以很好的性能解決數據沖突的問題。

何時取消key的監視

1.watch命令可以被調用多次。對鍵的監視從watch執行之后開始生效,直到調用exec為止,不管事務是否成功執行,

對所有鍵的監視都會被取消。

2.當客戶端斷開連接時,該客戶端對鍵的監視也會被取消。

3.unwatch命令可以手動取消對所有鍵的監視。

watch機制以及樂觀鎖舉例

Centos中Redis的下載編譯與安裝(超詳細):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334

Redis的啟動和關閉(前台啟動和后台啟動):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103972348

RedisDesktopManager客戶端可視化工具下載安裝與使用:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103983147

參照以上博客搭建好環境,並啟動redis服務端,然后開啟兩個客戶端連接。

這里使用的是XShell所以復制一個會話

在第一個客戶端中設置key-value並watch這個key然后開啟事務,不要exec即提交事務

然后在復制出來的會話即第二個客戶端中將此key修改為100

然后再回到第一個客戶端中執行exec即提交事務

可以看到第一個客戶端的事務並沒有提交,因為watch的值已經被修改了,所以放棄事務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM