分布式鎖 紅鎖

2021-10-05 01:28:32 字數 372 閱讀 2186

單台redis支援

set key value nx px time value

必須唯一避免誤解鎖,設定與失效時間不能分割,刪除鎖判斷是否解鎖人就是加鎖人,鎖失效時間應自動延長有效期

1、獲取當前時間

2、向多個節點獲取鎖,獲取鎖有乙個極小的超時時間。獲取鎖失敗後,立即嘗試下乙個redis節點獲取鎖

3、是否獲得鎖成功,首先判斷是否從大多數的節點中獲取到了鎖,(>=n/2+1)比如十臺機器,六臺之前獲得到了鎖。

之後判讀總共消耗的時間是否小於生效時間,如果大於生效時間獲取鎖失敗

4、獲取成功鎖的有效期,將重新計算。用有效期-第三步得出的總共消耗時間

5、如果客戶端獲取鎖失敗,立即向所有redis節點進行鎖釋放

分布式 分布式鎖

本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...

鎖和分布式鎖

一 鎖和分布式鎖 1.1 鎖 我們一般所說的鎖,就是指單程序多執行緒的鎖機制。在單程序中,如果有多個執行緒併發訪問某個某個全域性資源,存在併發修改的問題。如果要避免這個問題,我們需要對資源進行同步,同步其實就是可以加乙個鎖來保證同一時刻只有乙個執行緒能操作這個資源。在不同的場景,可能使用的鎖得方式不...

分布式鎖 使用Redis實現分布式鎖

關於分布式鎖的實現,我的前一篇文章講解了如何使用zookeeper實現分布式鎖。關於分布式鎖的背景此處不再做贅述,我們直接討論下如何使用redis實現分布式鎖。關於redis,筆主不打算做長篇大論的介紹,只介紹下redis優秀的特性。支援豐富的資料型別,如string list map set zs...