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的值已經被修改了,所以放棄事務。
總結
以上是生活随笔為你收集整理的Redis事务中的watch机制-从实例入手学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis事务中几种常见的场景-exec
- 下一篇: Redis的持久化机制-RDB方式和AO