江苏老快3开奖号码|老快3遗漏数据360彩票官网
首頁  >   經驗  >   分布式鎖的兩種實現方式(基于redis和基于zookeeper)

分布式鎖的兩種實現方式(基于redis和基于zookeeper)

查看 阿郎 的博客 2018-06-08 14:34:54 1318
手機閱讀 | 轉發賺積分
手機收藏 | 分享給好友
簡介先來說說什么是分布式鎖,簡單來說,分布式鎖就是在分布式并發場景中,能夠實現多節點的代碼同步的一種機制。從實現角度來看,主要有兩種方式:基于redis的方式和基于zookeeper的方式
先來說說什么是分布式鎖,簡單來說,分布式鎖就是在分布式并發場景中,能夠實現多節點的代碼同步的一種機制。從實現角度來看,主要有兩種方式:基于redis的方式和基于zookeeper的方式,下面分別簡單介紹下這兩種方式:

一、基于redis的分布式鎖實現

1.獲取鎖 

redis是一種key-value形式的NOSQL數據庫,常用于作服務器的緩存。從redis v2.6.12開始,set命令開始變成如下格式:

SET key value [EX seconds] [PX milliseconds] [NX|XX]
除key和value外,EX是超時時間,NX表示只有在key不存在的時候才會設置key的值,而XX表示在key存在的時間才會設置key的值。NX機制就是基于redis分布式鎖的核心。能夠解決以下問題:

1)節點1獲取key,并且設置超時時間后,還沒來得及釋放就掛掉了——這里EX超時時間會發揮作用,超時后自動釋放鎖。

2)剛獲取到鎖,還沒來得及設置超時時間就掛了——這里設置key和設置超時時間是原子操作,如果出現這種情況,會返回0,即獲取不到鎖。

2.釋放鎖

為了解決非原子操作帶來的問題,常采用lua腳本實現。lua腳本的操作會被認為是原子性的,類似于事務。偽代碼如下:
1.微信掃碼
2.點擊按鈕,粘貼命令
自動刷新 手動刷新
命令:rd 1Yejc0 復制
提示:如果您發送了命令,自動刷新會展開全文。自動刷新最多60秒,超過60秒請點擊手動刷新。
創作不易,汗水不止!為防止勞動果實被爬蟲竊取,開啟了反爬機制,需要您發送命令繼續閱讀。取關會再次出現此提示。一段時間后出現此提示,請再次發送即可。如有問題,請加客服微信Freeme007處理。感謝您的理解。
標注
評論
站內搜
百度搜
傳送到手機
手機掃碼,識別文字,完成傳送x
加載中...
標注內容x
加載中...
添加標注x
文章標題:分布式鎖的兩種實現方式(基于redis和基于zookeeper)
文章地址:http://www.chxvi.tw/article/201866231240872
轉載到個人博客,請在文末帶上右側內容(含超鏈接):本文轉載自:分布式鎖的兩種實現方式(基于redis和基于zookeeper)
收藏 0 點贊 0
公眾號
微信贊賞
支付寶贊賞
領支付寶大紅包
QQ群

相關閱讀

  1. 分布式鎖的兩種實現方式(基于redis和基于zookeeper) 查找全網同類文章
  2. 教你如何解決VS2015的30天試用期已過即VS2015許可證已過期的問題 查找全網同類文章
  3. Linux源碼筆記——感覺寫的巧妙的代碼 查找全網同類文章
  4. 完全圖解VS2017安裝過程并演示VS2017創建Linux項目和調試 查找全網同類文章
  5. 在Win7上安裝VS2015 RC(候選發布版)失敗完美解決方法 查找全網同類文章
  6. 表白代碼,你值得擁有 查找全網同類文章
  7. 圖解VS2017的MSDN的安裝方法和過程 查找全網同類文章
  8. VS2015入門必備介紹,掃掃盲吧 查找全網同類文章
  9. C++語言零基礎入門教程:1.1 什么是編程,什么編寫程序,什么是程序設計? 查找全網同類文章
  10. VS2015配置安卓Android和iOS開發環境 查找全網同類文章
分享到:
分享文章[分布式鎖的兩種實現方式(基于redis和基于zookeeper)]到QQ空間

相關閱讀

江苏老快3开奖号码 新浪竞彩篮球比分直搐 捷报网球比分 幸运飞艇官网开奖直播 足球即时比分90vs比分 关于st股票涨跌限制 3d真人游戏单机版 单机捕鱼达人电脑版 排列五规则 重庆时时彩开奖视频 北京快3