redis中的樂觀鎖

2021-10-05 18:33:15 字數 586 閱讀 4665

樂觀鎖,一種輕量級的鎖,通過cas(compare and swap)的操作對值進行修改或者不修改,cas會導致aba問題,但通過引入版本號可以解決。
watch..unwatch進行加鎖或者解鎖。一開始設定surplus是40,然後加鎖,開啟事務(這裡我只用了一條命令模擬),設定surplus為50,通過上篇文章,我們可以知道此事命令只是進入佇列並未執行。

接下來,我開啟了另乙個操作介面並連線redis,將surplus設定為1000,可以執行成功。

此事再來執行事務,你會發現,執行不成功,因為加了樂觀鎖,在執行的時候發現被修改過了。

在實際運用中,記得當執行失敗後,要進行unwatch,釋放鎖的操作,然後再重新獲取。

Redis中的樂觀鎖和悲觀鎖

悲觀鎖 pessimistic lock 顧名思義,就是很悲觀。每次獲取資料的時候,都會擔心資料被修改,所以每次獲取資料的時候都會進行加鎖,確保在自己使用的過程中資料不會被別人修改,使用完成後進行資料解鎖。由於資料進行加鎖,期間對該資料進行讀寫的其他執行緒都會進行等待。傳統的關係型資料庫裡邊就用到了...

Redis實現樂觀鎖

悲觀鎖 樂觀鎖 127.0.0.1 6379 set money 100 ok127.0.0.1 6379 set out 0 ok127.0.0.1 6379 watch money 監事 money 物件 ok127.0.0.1 6379 multi 事務正常結束,資料期間沒有發生變動,這個時候...

redis實現樂觀鎖

redis測試監控 正常執行成功!127.0.0.1 6379 set money 100 ok127.0.0.1 6379 set out 0 ok127.0.0.1 6379 watch money 監視money物件 ok127.0.0.1 6379 multi ok127.0.0.1 637...