redis的setnx命令可以原子的設(shè)置一個(gè)key,命令參數(shù)支持同時(shí)設(shè)置過(guò)期時(shí)間,成功返回1,key存在返回0,可以用來(lái)當(dāng)作分布式鎖。
即,設(shè)置成功的進(jìn)程獲取鎖,任務(wù)結(jié)束時(shí)刪除該key釋放鎖。為了防止進(jìn)程意外退出導(dǎo)致死鎖,為key設(shè)置過(guò)期時(shí)間,到期自動(dòng)刪除。但是當(dāng)其他進(jìn)程主動(dòng)刪除鎖key,獲取過(guò)期時(shí)間設(shè)置不合理時(shí),可能出現(xiàn)鎖失效。這時(shí),為key設(shè)置一個(gè)當(dāng)前進(jìn)程的標(biāo)示id,如uuid,釋放鎖時(shí)只有當(dāng)前進(jìn)程才能刪除該key。但這樣刪除操作就不是原子性了,可通過(guò)lua腳本來(lái)實(shí)現(xiàn)。
潛在問(wèn)題:lua腳本在不同集群架構(gòu)中可能實(shí)現(xiàn)存在問(wèn)題,需要實(shí)際驗(yàn)證確認(rèn)是否可用。
redis分布式鎖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
- 表情是什么,我認(rèn)為表情就是表現(xiàn)出來(lái)的情緒。表情可以傳達(dá)很多信息。高興了當(dāng)然就笑了,難過(guò)就哭了。兩者是相互影響密不可...