回覆列表
  • 1 # 使用者7781559152156

    任何一個安全的分散式鎖需要滿足下面三個條件:

    互斥:任何時候,一個鎖只能被一個客戶端所有,加鎖過程需要原子操作。不會死鎖:即使某個持有鎖的客戶端掛掉,其他客戶端仍舊可以獲取該鎖。容錯:只要是大部分分散式節點存活,客戶端就可以正常獲取和釋放鎖。

    1和2相對容易,3比較難。

    再來看作者的問題:如何防止鎖失效或者過期?

    答:如果想要滿足上面條件2,鎖失效機制是必須的,因為如果沒有失效機制,某個客戶端加了鎖,然後自己掛掉了,這時候是沒辦法解鎖的,會死鎖。因此需要給鎖設定失效機制,即使沒有客戶端主動解鎖,也會在失效時間到了之後自動解除。

    因為Redis是快取伺服器,為了防止例項重啟丟掉鎖,需要配置持久化策略,讓它把資料儲存在磁碟上。

    Redis如下實現分散式鎖,請參考下面文章:

    基於redis的分散式鎖實現 - 後端 - 掘金

  • 中秋節和大豐收的關聯?
  • 請問辦理一個食品加工廠需要辦理哪些證件?