0 Github
<https://yq.aliyun.com/go/articleRenderRedirect?url=https%3A%2F%2Fgithub.com%2FWasabi1234>
1 面試題
一般實(shí)現(xiàn)分布式鎖都有哪些方式?使用redis如何設(shè)計(jì)分布式鎖?使用zk來設(shè)計(jì)分布式鎖可以嗎?這兩種分布式鎖的實(shí)現(xiàn)方式哪種效率比較高?
2 考點(diǎn)分析
一般先問問你zk,然后過渡到zk關(guān)聯(lián)的一些問題,比如分布式鎖.
因?yàn)樵诜植际较到y(tǒng)開發(fā)中,分布式鎖的使用場景還是很常見的~
3 Redis分布式鎖
官方叫做RedLock算法,是Redis官方支持的分布式鎖算法.
這個分布式鎖有3個重要的考量點(diǎn)
* 互斥(只能有一個客戶端獲取鎖)
* 不能死鎖
* 容錯(大部分Redis節(jié)點(diǎn)或者這個鎖就可以加可以釋放)
3.1 最普通的實(shí)現(xiàn)方式
創(chuàng)建一個key
SET my:lock 隨機(jī)值 NX PX 30000
* NX : 只有key不存在的時候才會設(shè)置成功
* PX 30000 : 30秒后鎖自動釋放。別人創(chuàng)建的時候如果發(fā)現(xiàn)已經(jīng)有了就不能加鎖了.
釋放鎖就是刪除key
熱門工具 換一換