Redis入門(七):Redis分佈式鎖(單機模式

Redis 實現分佈式鎖

單機模式的Redis分佈式鎖

優缺點

實現比較輕,大多數時候能滿足需求;因為是單機單實例部署,如果redis服務宕機,那麼所有需要獲取分佈式鎖的地方均無法獲取鎖,將全部阻塞,需要做好降級處理。

當鎖過期後,執行任務的進程還沒有執行完,但是鎖因為自動過期已經解鎖,可能被其它進程重新加鎖,這就造成多個進程同時獲取到了鎖,這需要額外的方案來解決這種問題。

實現代碼

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

集群模式的Redis分佈式鎖 Redlock

優缺點

Redlock是Redis的作者antirez給出的集群模式的Redis分佈式鎖,它基於N個完全獨立的Redis節點

部分節點宕機,依然可以保證鎖的可用性

當某個節點宕機後,又立即重啟了,可能會出現兩個客戶端同時持有同一把鎖,如果節點設置了持久化,出現這種情況的幾率會降低

和單機模式Redis鎖相比,實現難度要大一些

實現代碼

搭建redis集群

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

腳本執行後,出現如下日誌,說明集群搭建成功

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

redis-cluster簡單集群示例圖

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

使用Redission構建redLock

Redis集群使用分片的方式保存鍵值對,redis-cluster採用slot(槽)的概念,一共16384個槽位,分佈在集群中的所有master實例上。保存數據時,直接對key值做CRC16校驗後得到的校驗值對16384取模,將鍵值對存儲到對應的槽位所在的實例上。

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

Redis入門(七):Redis分佈式鎖(單機模式/集群模式)

---------------------

原文:https://blog.csdn.net/haiyoung/article/details/83038690


分享到:


相關文章: