2023-01-29
一、redis事務與樂觀鎖相關命令
1、redis事務
(1)redis事務的含義
redis事務是一個單獨的隔離操作:事務中的所有命令都會序列化、按順序執行,事務在執行程序中,不會被其他客戶端送來的命令請求所打斷,
(2)redis事務的作用
redis事務的主要作用就是串聯多個命令防止別的命令插隊,
2、multi、exec、discard
(1)multi:組隊命令,之后使用“set key value”的命令
(2)exec:將輸入的“set key value”的命令依次進行執行

(3)discard:放棄組隊

3、悲觀鎖(Pessimistic Lock)
即每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖,這樣其他人想拿這個資料就會block直到它拿到鎖,
傳統的關系型資料庫里面就用到了很多這個鎖機制,比如行鎖、表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖,
4、樂觀鎖(Optimistic Lock)
即每次去拿資料的時候都認為別人不會修改,所以不會上鎖,單是在更新的時候會判斷一下在此期間別人有沒有去更新這個資料,可以使用版本號等機制,
樂觀鎖使用于多讀的應用型別,這樣可以提高吞吐量,Redis就是利用這種check-and-set機制實作事務的,
5、watch key
在執行multi之前,先執行watch key1[key2],可以監視一個(或多個)key,如果在事務執行之前這個(或這些)key被其他命令所改動,那么事務將被打斷,

5、redis事務三特性
(1)單獨的隔離操作
事務中的所有命令都會序列化、按順序地執行,事務在執行程序中,不會被其他客戶端發送來的命令請求所打斷,
(2)沒有隔離級別的概念
佇列中的命令沒有提交之前都不會被執行,因為事務提交前任何指令都不會被實際執行,
(3)不保證原子性
事務中如果有一條命令執行失敗,其他命令仍然會被執行,沒有回滾,
二、應用場景
1、使用樂觀鎖解決超賣問題,
2、使用連接池解決超時問題
3、使用LUA腳本解決庫存遺留問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/542520.html
標籤:其他
上一篇:Go chan決議
