Intro Redis Distributed Lock On RedisCluster

Intro Redis Distributed Lock On RedisCluster

這篇介紹Redis Distributed Lock On RedisCluster。

使用上會遇到的問題

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
在Redis上使用分散式鎖,是很常見的功能。
在single redis上,分散式鎖是正常可用的。

Redis高可用最常見的方案就是RedisCluster(master-slave),
這種模式在redis分散式鎖有缺陷。

redis cluster叢集環境下,假如現在A使用者端想要加鎖,它會根據路由規則
選擇一臺master節點寫入key mylock,在加鎖成功後,master節點會把key非同
步複製給對應的slave節點。

如果此時redis master節點當機從節點複製失敗,為保證叢集可用性,會進行
主備切換,slave變為了redis master。B使用者在新的master節點上加鎖成功
,而A使用者也以為自己還是成功加了鎖的。另外如果主從複製延遲同樣也會
造成加鎖和解鎖延遲的問題。

此時就會導致同一時間內多個使用者端對一個分散式鎖完成了加鎖,導致各種
髒資料的產生。