婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解redis分布式鎖的這些坑

詳解redis分布式鎖的這些坑

熱門標簽:十堰營銷電銷機器人哪家便宜 魔獸2青云地圖標注 山東外呼銷售系統招商 貴州電銷卡外呼系統 超呼電話機器人 宿遷便宜外呼系統平臺 日本中國地圖標注 北京400電話辦理收費標準 鄭州人工智能電銷機器人系統

一、白話分布式

什么是分布式,用最簡單的話來說,就是為了較低單個服務器的壓力,將功能分布在不同的機器上面,本來一個程序員可以完成一個項目:需求->設計->編碼->測試

但是項目多的時候,一個人也扛不住,這就需要不同的人進行分工合作了

這就是一個簡單的分布式協同工作了;

二、分布式鎖

首先看一個問題,如果說某個環節被終止或者別侵占,就會發生不可知的事情

這就會出現,設計好的或者設計的半成品會被破壞,導致后面環節出錯;

這時候,我們就需要引入分布式鎖的概念;

何為分布式鎖

當在分布式模型下,數據只有一份(或有限制),此時需要利用鎖的技術控制某一時刻修改數據的進程數。

用一個狀態值表示鎖,對鎖的占用和釋放通過狀態值來標識。

分布式鎖的條件

  • 可以保證在分布式部署的應用集群中,同一個方法在同一時間只能被一臺機器上的一個線程執行。
  • 這把鎖要是一把可重入鎖(避免死鎖)
  • 這把鎖最好是一把阻塞鎖
  • 這把鎖最好是一把公平鎖
  • 有高可用的獲取鎖和釋放鎖功能
  • 獲取鎖和釋放鎖的性能要好

分布式鎖的實現

分布式鎖的實現由很多種,文件鎖、數據庫、redis等等,比較多,在實踐中,還是redis做分布式鎖性能會高一些;

三、redis實現分布式鎖

首先看兩個命令:

setnx:將 key 的值設為 value,當且僅當 key 不存在。 若給定的 key 已經存在,則 SETNX 不做任何動作。 SETNX 是SET if Not eXists的簡寫。

127.0.0.1:6379> set lock "unlock"
OK
127.0.0.1:6379> setnx lock "unlock"
(integer) 0
127.0.0.1:6379> setnx lock "lock"
(integer) 0
127.0.0.1:6379>

expire:EXPIRE key seconds

為給定 key 設置生存時間,當 key 過期時(生存時間為 0 ),它會被自動刪除

127.0.0.1:6379> expire lock 10
(integer) 1
127.0.0.1:6379> ttl lock
8
127.0.0.1:6379> get lock
(nil)

基于分布式鎖的流程:

這就是一個簡單的分布式鎖的實現流程,具體代碼實現也很簡單,就不贅述了;

四、redis實現分布式鎖問題

如果出現了這么一個問題:如果setnx是成功的,但是expire設置失敗,那么后面如果出現了釋放鎖失敗的問題,那么這個鎖永遠也不會被得到,業務將被鎖死?

解決的辦法:使用set的命令,同時設置鎖和過期時間

set參數:

set key value [EX seconds] [PX milliseconds] [NX|XX]

EX seconds:設置失效時長,單位秒

PX milliseconds:設置失效時長,單位毫秒

NX:key不存在時設置value,成功返回OK,失敗返回(nil)

XX:key存在時設置value,成功返回OK,失敗返回(nil)

實踐:

127.0.0.1:6379> set unlock "234" EX 100 NX
(nil)
127.0.0.1:6379> 
127.0.0.1:6379> set test "111" EX 100 NX
OK

這樣就完美的解決了分布式鎖的原子性。

五、用鎖遇到過哪些問題?又是如何解決的?未關閉資源

由于當前線程 獲取到redis 鎖,處理完業務后未及時釋放鎖,導致其它線程會一直嘗試獲取鎖阻塞,例如:用Jedis客戶端會報如下的錯誤信息

1redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool

redis線程池已經沒有空閑線程來處理客戶端命令。使用原生方法記得關閉!

解決的方法也很簡單,只要我們細心一點,拿到鎖的線程處理完業務及時釋放鎖

B的鎖被A給釋放了

我們知道Redis實現鎖的原理在于 SETNX命令。當 key不存在時將 key的值設為 value ,返回值為 1;若給定的 key已經存在,則 SETNX不做任何動作,返回值為 0 。

SETNX key value

我們來設想一下這個場景:A、B兩個線程來嘗試給key myLock加鎖,A線程先拿到鎖(假如鎖3秒后過期),B線程就在等待嘗試獲取鎖,到這一點毛病沒有。

那如果此時業務邏輯比較耗時,執行時間已經超過redis鎖過期時間,這時A線程的鎖自動釋放(刪除key),B線程檢測到myLock這個key不存在,執行 SETNX命令也拿到了鎖。

但是,此時A線程執行完業務邏輯之后,還是會去釋放鎖(刪除key),這就導致B線程的鎖被A線程給釋放了。

為避免上邊的情況,一般我們在每個線程加鎖時要帶上自己獨有的value值來標識,只釋放指定value的key,否則就會出現釋放鎖混亂的場景

一般我們可以設置value為業務前綴_當前線程ID或者uuid,只有當前value相同的才可以釋放鎖

鎖過期了,業務還沒執行完

redis分布式鎖過期,而業務邏輯沒執行完的場景,不過,這里換一種思路想問題,把redis鎖的過期時間再弄長點不就解決了嗎?

那還是有問題,我們可以在加鎖的時候,手動調長redis鎖的過期時間,可這個時間多長合適?業務邏輯的執行時間是不可控的,調的過長又會影響操作性能。

要是redis鎖的過期時間能夠自動續期就好了。

為了解決這個問題我們使用redis客戶端redisson,redisson很好的解決了redis在分布式環境下的一些棘手問題,它的宗旨就是讓使用者減少對Redis的關注,將更多精力用在處理業務邏輯上。

redisson對分布式鎖做了很好封裝,只需調用API即可。

RLock lock = redissonClient.getLock("stockLock");

redisson在加鎖成功后,會注冊一個定時任務監聽這個鎖,每隔10秒就去查看這個鎖,如果還持有鎖,就對過期時間進行續期。默認過期時間30秒。這個機制也被叫做:“看門狗”

redis主從復制的坑

redis高可用最常見的方案就是主從復制(master-slave),這種模式也給redis分布式鎖挖了一坑。

redis cluster集群環境下,假如現在A客戶端想要加鎖,它會根據路由規則選擇一臺master節點寫入key mylock,在加鎖成功后,master節點會把key異步復制給對應的slave節點。

如果此時redis master節點宕機從節點復制失敗,為保證集群可用性,會進行主備切換,slave變為了redis master。B客戶端在新的master節點上加鎖成功,而A客戶端也以為自己還是成功加了鎖的。另外如果主從復制延遲同樣也會造成加鎖和解鎖延遲的問題。

此時就會導致同一時間內多個客戶端對一個分布式鎖完成了加鎖,導致各種臟數據的產生。

畢竟redis是保持的AP而非CP,如果要追求強一致性可以使用zookeeper分布式鎖。

以上就是詳解redis分布式鎖的這些坑的詳細內容,更多關于redis分布式鎖的這些坑的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • 基于Redis實現分布式鎖的方法(lua腳本版)
  • SpringBoot之使用Redis實現分布式鎖(秒殺系統)
  • 詳解Redis 分布式鎖遇到的序列化問題
  • 詳解RedisTemplate下Redis分布式鎖引發的系列問題
  • redisson分布式鎖的用法大全
  • php基于redis的分布式鎖實例詳解
  • Redis分布式鎖升級版RedLock及SpringBoot實現方法
  • 利用redis實現分布式鎖,快速解決高并發時的線程安全問題
  • 詳解基于redis實現分布式鎖

標簽:吉安 朝陽 江蘇 北京 楊凌 果洛 臺州 大慶

巨人網絡通訊聲明:本文標題《詳解redis分布式鎖的這些坑》,本文關鍵詞  詳解,redis,分布式,鎖,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解redis分布式鎖的這些坑》相關的同類信息!
  • 本頁收集關于詳解redis分布式鎖的這些坑的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产激情偷乱视频一区二区三区| 综合欧美亚洲日本| 欧美日韩综合不卡| 91精品办公室少妇高潮对白| 日本丶国产丶欧美色综合| 91在线观看免费视频| 色94色欧美sute亚洲线路一ni | 日韩欧美一二三区| 日韩欧美一二三| 国产夜色精品一区二区av| 久久一区二区三区四区| 欧美激情在线免费观看| 亚洲欧美日韩中文字幕一区二区三区| 亚洲少妇屁股交4| 五月婷婷激情综合| 午夜精品一区二区三区免费视频 | 91麻豆国产福利精品| 91视频一区二区| 91精品国产综合久久久久| 欧美精品一区二区三区高清aⅴ | 欧美性淫爽ww久久久久无| 欧美日韩成人激情| 欧美tickling挠脚心丨vk| 久久嫩草精品久久久精品| 中文字幕国产一区二区| 成人性生交大合| 欧美性做爰猛烈叫床潮| 欧美成va人片在线观看| 国产精品国产馆在线真实露脸| 伊人一区二区三区| 九九视频精品免费| 色诱视频网站一区| 欧美成人一区二区三区| 国产精品对白交换视频| 日韩二区在线观看| 成人综合在线观看| 欧美一级爆毛片| 一区二区三区在线观看视频 | 亚洲乱码国产乱码精品精98午夜 | 3d成人动漫网站| 中文字幕av一区 二区| 亚洲国产乱码最新视频 | 日本午夜精品一区二区三区电影| 国产麻豆精品95视频| 欧美三级韩国三级日本三斤| 国产农村妇女精品| 麻豆成人久久精品二区三区红| av一二三不卡影片| 精品av久久707| 日本人妖一区二区| 色诱视频网站一区| 中文一区在线播放| 久久精品国内一区二区三区| 欧美日韩三级一区| 亚洲美腿欧美偷拍| 成人亚洲精品久久久久软件| 日韩欧美国产一二三区| 视频一区二区三区入口| 欧美又粗又大又爽| 亚洲欧美视频一区| 91在线码无精品| 亚洲色图欧洲色图| av亚洲精华国产精华| 国产亚洲欧美一级| 国精产品一区一区三区mba桃花 | 欧美精品乱人伦久久久久久| 日韩一区在线播放| av动漫一区二区| 国产精品每日更新| 成人一区二区三区在线观看| 欧美极品aⅴ影院| 成人精品免费网站| 亚洲人午夜精品天堂一二香蕉| 成人av电影在线观看| 中文字幕 久热精品 视频在线| 丰满亚洲少妇av| 欧美激情一区三区| 国产69精品一区二区亚洲孕妇| 国产亚洲女人久久久久毛片| 激情深爱一区二区| 国产日韩欧美一区二区三区乱码| 国产麻豆精品久久一二三| 国产婷婷精品av在线| 国产成人av电影免费在线观看| 国产精品久久久久久妇女6080| 成人a级免费电影| 夜夜嗨av一区二区三区中文字幕| 国产欧美综合在线观看第十页| 成人高清视频在线观看| 自拍偷拍欧美激情| 欧美精品视频www在线观看 | av欧美精品.com| 亚洲欧美日韩综合aⅴ视频| 欧美日韩免费一区二区三区视频| 美腿丝袜亚洲一区| 日本一区二区三区dvd视频在线 | 日韩免费高清av| 国产精品资源站在线| 亚洲人成网站在线| 日韩欧美一二区| 国产精品一级二级三级| 一区二区三区美女| 精品国产91乱码一区二区三区| www.在线成人| 日韩精品国产精品| 国产精品丝袜在线| 欧美精品一二三区| av爱爱亚洲一区| 久草精品在线观看| 亚洲精品第1页| 久久伊人蜜桃av一区二区| 色婷婷av一区二区三区之一色屋| 美女诱惑一区二区| 亚洲精品欧美在线| 国产午夜精品在线观看| 欧美欧美欧美欧美| 91一区一区三区| 国产成人精品免费网站| 日本中文一区二区三区| 亚洲免费观看高清完整版在线| 精品奇米国产一区二区三区| 欧洲亚洲精品在线| av网站免费线看精品| 精品一区二区三区久久久| 亚洲一区在线观看视频| 国产精品每日更新在线播放网址| 日韩欧美一二区| 欧美日本在线观看| 日本久久电影网| 99re在线视频这里只有精品| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩高清一区二区不卡| 99久久精品久久久久久清纯| 国产一区二区三区在线观看精品 | 成人app下载| 国产精品一区在线观看你懂的| 日本亚洲天堂网| 日韩经典中文字幕一区| 亚洲国产aⅴ天堂久久| 一区二区视频在线| 亚洲另类色综合网站| 亚洲视频中文字幕| 亚洲欧美综合色| 成人免费在线观看入口| 亚洲国产成人在线| 亚洲国产精品精华液ab| 久久久噜噜噜久久人人看| 26uuu色噜噜精品一区二区| 91精品国产91热久久久做人人| 亚洲日本va午夜在线影院| 国产精品白丝在线| 中文字幕一区二区三区蜜月| 国产精品久久毛片av大全日韩| 国产精品美日韩| 综合婷婷亚洲小说| 亚洲一二三区视频在线观看| 亚洲黄网站在线观看| 午夜视频在线观看一区二区| 三级久久三级久久久| 另类小说图片综合网| 国产综合色产在线精品| 成人国产精品免费| 91官网在线观看| 日韩区在线观看| 国产性色一区二区| 亚洲免费观看高清完整版在线| 香蕉久久一区二区不卡无毒影院 | 欧美老年两性高潮| 欧美tickling挠脚心丨vk| 国产欧美视频在线观看| 亚洲人成网站在线| 日本女优在线视频一区二区| 国产成人免费9x9x人网站视频| 99久久精品免费看国产免费软件| 欧美日韩一二区| 国产亚洲成aⅴ人片在线观看 | 波波电影院一区二区三区| 91久久久免费一区二区| 日韩一区二区麻豆国产| 国产精品成人一区二区艾草| 午夜精品久久久久久久| 国产老女人精品毛片久久| 在线亚洲+欧美+日本专区| 欧美成人女星排名| 亚洲精选免费视频| 国产精品亚洲人在线观看| 欧美日韩中文另类| 中文字幕av一区二区三区| 天天综合色天天综合色h| 国产a区久久久| 91精品福利在线一区二区三区| 国产精品嫩草影院com| 日韩va欧美va亚洲va久久| 成人av在线网站| 欧美成人高清电影在线| 亚洲综合偷拍欧美一区色| 盗摄精品av一区二区三区| 精品欧美一区二区久久| 亚洲成人精品在线观看| 一本色道久久综合亚洲91|