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

Redis分布式鎖如何設置超時時間

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

Redis分布式鎖設置超時時間

Redis分布式鎖主要依靠Redis服務來完成,我們的應用程序其實是Redis節(jié)點的客戶端,一旦客戶端沒有釋放鎖,服務端就會一直持有這個鎖,其他進程中的線程就無法獲取到這把鎖,于是就會發(fā)生鎖死的情況。

所以我們在使用Redis分布式鎖的時候,務必要設置鎖的過期時間。

主要基于下面兩點:

網(wǎng)絡抖動

客戶端A中的一個線程獲取到了鎖,然后執(zhí)行finally中的釋放鎖的代碼時,這時候網(wǎng)絡出問題了,導致客戶端A沒有成功釋放鎖。此時對于redis服務端來說,它會一直把鎖給客戶端A,這樣的話其他客戶端自然也就不能獲取到這個鎖。

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

Redis宕機

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

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

Redis分布式鎖的超時問題

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

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

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

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

相關文章

  • 基于Redis6.2.6版本部署Redis?Cluster集群的問題

    基于Redis6.2.6版本部署Redis?Cluster集群的問題

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

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

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

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

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

    redisson滑動時間窗應用場景解決方案

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

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

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

    Redis結合 Docker 搭建集群并整合SpringBoot的詳細過程

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

    淺談Redis中LFU算法源碼解析

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

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

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

    Redis中管道操作的項目實踐

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

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

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

最新評論

修文县| 谢通门县| 翁牛特旗| 屯留县| 彰化县| 温宿县| 聊城市| 佳木斯市| 衡水市| 天等县| 故城县| 九江县| 日照市| 朝阳区| 新余市| 巴南区| 得荣县| 山阳县| 宣城市| 濮阳市| 定结县| 桦南县| 宜城市| 朝阳区| 通州区| 临城县| 建平县| 龙井市| 泰州市| 汝阳县| 孟州市| 柘荣县| 海阳市| 东源县| 县级市| 佛冈县| 赤城县| 从江县| 九龙县| 册亨县| 莲花县|