什么是鎖
今天要談的是如何在分布式環(huán)境下實現(xiàn)一個全局鎖,在開始之前先說說非分布式下的鎖:
- 單機(jī) – 單進(jìn)程程序使用互斥鎖mutex,解決多個線程之間的同步問題
- 單機(jī) – 多進(jìn)程程序使用信號量sem,解決多個進(jìn)程之間的同步問題
這里同步的意思很簡單:某個運行者,用某個工具,保障某段代碼,獨占的運行,直到釋放。
分布式鎖解決的是 多臺機(jī)器 – 多個進(jìn)程 之間的同步問題,因為不同的機(jī)器之間mutex/sem無法使用。不過要注意:即便如此,一個進(jìn)程內(nèi)多個線程之間仍舊建議使用mutex同步,盡量減少對分布式鎖服務(wù)造成不必要的負(fù)擔(dān)。
redis分布式鎖
首先呢,基于redis的分布式鎖并不是一個坊間方案,而是redis官網(wǎng)提供的解決思路并且有若干語言的實現(xiàn)版本直接使用。
今天要做的,首先是閱讀官方的文檔(中文點我,英文點我),有些地方講的不怎么清晰,所以我接下來會分析PHP版本的代碼,應(yīng)該可以解答你的主要疑惑。
分析代碼
首先打開代碼:https://github.com/ronnylt/redlock-php/blob/master/src/RedLock.php,這是PHP的官方推薦實現(xiàn)版本,它基于composer安裝(不懂composer可以點我)。
構(gòu)造函數(shù)
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26