前言
基本原理都是:用餘光狀態值表示鎖,對鎖的佔用和釋放經過狀態值標識。sql
##Redisget
操做流程:原理
- 先試用setnx嘗試獲取鎖,若是返回0說明獲取鎖失敗。
- 發送Get檢查鎖是否超時,若是沒超時,則等待或重試。
- 若是已超時,經過getset嘗試獲取鎖。
- 若是getset拿到的時間戳是超時的說明,成功獲取的鎖了。
- 若是被其餘客戶端搶先,getset活動的時間戳是未超時的,則說明獲取鎖失敗,繼續等待重試。
關鍵詞:im
- lockKey;鎖鍵;
- expireMse = 60*1000;鎖超時時間,防止鎖後執行等待;
- timeoutMsecs 鎖等待時間;
Zookeeper
Mysql