最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis分布式鎖如何設(shè)置超時(shí)時(shí)間

 更新時(shí)間:2022年11月18日 15:08:49   作者:每天都要進(jìn)步一點(diǎn)點(diǎn)  
這篇文章主要介紹了Redis分布式鎖如何設(shè)置超時(shí)時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Redis分布式鎖設(shè)置超時(shí)時(shí)間

Redis分布式鎖主要依靠Redis服務(wù)來(lái)完成,我們的應(yīng)用程序其實(shí)是Redis節(jié)點(diǎn)的客戶端,一旦客戶端沒(méi)有釋放鎖,服務(wù)端就會(huì)一直持有這個(gè)鎖,其他進(jìn)程中的線程就無(wú)法獲取到這把鎖,于是就會(huì)發(fā)生鎖死的情況。

所以我們?cè)谑褂肦edis分布式鎖的時(shí)候,務(wù)必要設(shè)置鎖的過(guò)期時(shí)間。

主要基于下面兩點(diǎn):

網(wǎng)絡(luò)抖動(dòng)

客戶端A中的一個(gè)線程獲取到了鎖,然后執(zhí)行finally中的釋放鎖的代碼時(shí),這時(shí)候網(wǎng)絡(luò)出問(wèn)題了,導(dǎo)致客戶端A沒(méi)有成功釋放鎖。此時(shí)對(duì)于redis服務(wù)端來(lái)說(shuō),它會(huì)一直把鎖給客戶端A,這樣的話其他客戶端自然也就不能獲取到這個(gè)鎖。

如果是設(shè)置了過(guò)期時(shí)間的話,即使客戶端和服務(wù)端的網(wǎng)絡(luò)不通了,服務(wù)端依然在進(jìn)行時(shí)間的計(jì)算,時(shí)間到了直接把鎖釋放掉,等網(wǎng)絡(luò)通了,不影響其他客戶端獲取鎖。

Redis宕機(jī)

客戶端A獲取到了鎖,Redis服務(wù)器突然宕機(jī),鎖沒(méi)有釋放。等到Redis再次恢復(fù)的時(shí)候,Redis服務(wù)端還會(huì)把鎖給到客戶端A,這樣也會(huì)發(fā)生鎖死的情況。

如果是設(shè)置了過(guò)期時(shí)間的話,服務(wù)器恢復(fù)后就會(huì)繼續(xù)倒計(jì)時(shí),時(shí)間到了服務(wù)器自動(dòng)把鎖釋放,其他客戶端也就可以嘗試去獲取鎖了。

Redis分布式鎖的超時(shí)問(wèn)題

Redis的分布式鎖并不能解決超時(shí)問(wèn)題,如果在加鎖和釋放鎖之間的邏輯執(zhí)行得太長(zhǎng),以至于超出了鎖的超時(shí)限制,就會(huì)出現(xiàn)問(wèn)題,因?yàn)檫@時(shí)候第一個(gè)線程持有的鎖過(guò)期了,臨界區(qū)的邏輯還沒(méi)有執(zhí)行完,而同時(shí)第二個(gè)線程就提前持有了這把鎖,導(dǎo)致臨界區(qū)代碼不能得到嚴(yán)格串行執(zhí)行。

為了避免這個(gè)問(wèn)題,分布式鎖不要用于較長(zhǎng)時(shí)間的任務(wù),如果真的偶爾出現(xiàn)了問(wèn)題,造成的數(shù)據(jù)小錯(cuò)亂,可能需要人工介入解決。

有一個(gè)稍微安全一點(diǎn)的方案,是將set指令的value參數(shù)設(shè)置為一個(gè)隨機(jī)數(shù),釋放鎖時(shí)先匹配隨機(jī)數(shù)是否一致,然后在刪除key,這是為了確保當(dāng)前線程占有的鎖不會(huì)被其他線程釋放,除非這個(gè)鎖是自動(dòng)超時(shí),但是匹配value,和刪除ke y不是一個(gè)原子操作,所以只是相對(duì)安全。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Redis6.2.6版本部署Redis?Cluster集群的問(wèn)題

    基于Redis6.2.6版本部署Redis?Cluster集群的問(wèn)題

    這篇文章主要介紹了基于Redis6.2.6版本部署Redis?Cluster集群,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Redis添加商鋪查詢緩存功能實(shí)現(xiàn)

    Redis添加商鋪查詢緩存功能實(shí)現(xiàn)

    文章主要介紹了如何使用流程圖來(lái)設(shè)計(jì)實(shí)現(xiàn)邏輯,并詳細(xì)講解了Service層的實(shí)現(xiàn)方法,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-03-03
  • 為何Redis使用跳表而非紅黑樹實(shí)現(xiàn)SortedSet

    為何Redis使用跳表而非紅黑樹實(shí)現(xiàn)SortedSet

    本篇文章主要介紹了為何Redis使用跳表而非紅黑樹實(shí)現(xiàn)SortedSet,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • redisson滑動(dòng)時(shí)間窗應(yīng)用場(chǎng)景解決方案

    redisson滑動(dòng)時(shí)間窗應(yīng)用場(chǎng)景解決方案

    前10分鐘內(nèi)累計(jì)3次驗(yàn)證失敗后,增加圖形驗(yàn)證碼驗(yàn)證條件,前10分鐘內(nèi)累計(jì)6次驗(yàn)證失敗后,系統(tǒng)自動(dòng)鎖定該賬號(hào)15分鐘,15分鐘后自動(dòng)解鎖,本文給大家分享redisson滑動(dòng)時(shí)間窗應(yīng)用場(chǎng)景解決方案,感興趣的朋友一起看看吧
    2024-01-01
  • Centos7下Redis3.2.8最新版本安裝教程

    Centos7下Redis3.2.8最新版本安裝教程

    這篇文章主要為大家詳細(xì)介紹了Centos7下Redis3.2.8最新版本的安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Redis結(jié)合 Docker 搭建集群并整合SpringBoot的詳細(xì)過(guò)程

    Redis結(jié)合 Docker 搭建集群并整合SpringBoot的詳細(xì)過(guò)程

    這篇文章主要介紹了Redis結(jié)合Docker搭建集群并整合SpringBoot的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • 淺談Redis中LFU算法源碼解析

    淺談Redis中LFU算法源碼解析

    Redis的LFU淘汰算法主要用于?maxmemory-policy?設(shè)置為allkeys-lfu或volatile-lfu時(shí),以最少使用頻率的鍵進(jìn)行淘汰,本文主要介紹了淺談Redis中LFU算法源碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • redis分布式鎖及會(huì)出現(xiàn)的問(wèn)題解決

    redis分布式鎖及會(huì)出現(xiàn)的問(wèn)題解決

    這篇文章主要給大家介紹了關(guān)于redis分布式鎖及會(huì)出現(xiàn)問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Redis中管道操作的項(xiàng)目實(shí)踐

    Redis中管道操作的項(xiàng)目實(shí)踐

    Redis管道操作通過(guò)將多個(gè)命令一次性發(fā)送到服務(wù)器,減少了網(wǎng)絡(luò)往返次數(shù),本文就來(lái)介紹一下Redis的管道操作,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • 關(guān)于分布式鎖的三種實(shí)現(xiàn)方式

    關(guān)于分布式鎖的三種實(shí)現(xiàn)方式

    這篇文章主要介紹了關(guān)于分布式鎖的三種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論

太白县| 松滋市| 龙井市| 西城区| 武宁县| 建德市| 香格里拉县| 泽库县| 阳山县| 鸡西市| 白水县| 庆云县| 乌兰县| 乳源| 遂溪县| 庆安县| 灵石县| 华阴市| 加查县| 阿城市| 铜山县| 齐齐哈尔市| 南阳市| 开阳县| 康乐县| 邮箱| 常州市| 乌什县| 霍城县| 微山县| 高密市| 霞浦县| 金门县| 蕲春县| 绿春县| 青神县| 海口市| 建瓯市| 谢通门县| 荥经县| 绩溪县|