天天看點

Redis和ZK實作分布式鎖

一、Redis實作分布式鎖

    1、使用Redis分布式鎖的原因:Redis性能好;指令支援比較好,實作友善。

    2、實作方式:直接用int setnx寫key,如果成功了,說明擷取鎖成功,否則拿鎖失敗。拿鎖成功之後對key設定逾時時間,操作完成時可通過del key釋放鎖。

二、Zookeeper實作分布式鎖

    1、通過建立zk的znode節點進行控制。檢查zookeeper叢集下的這個節點是否存在存在證明已經有鎖了,不存在就沒有。

    Redis分布式鎖:必須使用者自己間隔時間輪詢去嘗試加鎖,當鎖被釋放後,存在多線程去争搶鎖,并且可能每次間隔時間去嘗試鎖的時候,都不成功,對性能浪費很大。

    Zookeeper分布鎖:首先建立加鎖标志檔案,如果需要等待其他鎖,則添加監聽後等待通知或者逾時,當有鎖釋放,無須争搶,按照節點順序,依次通知使用者。

redis鎖效率更高?

繼續閱讀