国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Redisson 分布式鎖可重入的原理

這篇具有很好參考價值的文章主要介紹了Redisson 分布式鎖可重入的原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

1. 使用 Redis 實現(xiàn)分布式鎖存在的問題

2. Redisson 的分布式鎖解決不可重入問題的原理


1. 使用 Redis 實現(xiàn)分布式鎖存在的問題

  • 不可重入:同一個線程無法兩次 / 多次獲取鎖
  • 舉例
    • method1 執(zhí)行需要獲取鎖
    • method2 執(zhí)行也需要(同一把)鎖
    • 如果 method1 中調(diào)用了 method2,就會出現(xiàn)死鎖的情況
    • method1 執(zhí)行的過程是同一個線程,但是鎖無法識別,則無法重入

2. Redisson 的分布式鎖解決不可重入問題的原理

  • 原理
    • 判斷是否可重入:記錄占有鎖的當前線程和想要獲取鎖的線程是否是同一個線程,如果是則獲取鎖成功
    • 獲取鎖
      • 判斷鎖是否是自己的
      • 在 hash 的 value 中記錄鎖總共被(同一線程)獲取的次數(shù),獲取一次,value + 1,且要重置鎖的有效期,給重入的方法執(zhí)行預留充足時間
    • 釋放鎖:判斷鎖的重入次數(shù)(即 value)是否為 0
      • 如果為 0,說明重入鎖的層數(shù)到了最外層(method1),可以執(zhí)行釋放鎖的邏輯
      • 如果 value > 0,說明還沒有到最外層(還在執(zhí)行 method2),則不能釋放鎖,而是將 value - 1,表示跳到外面一層,且需要重置鎖的有效期
  • 核心思想:利用 Redis 中的 hash 結(jié)構(gòu),記錄獲取鎖的線程和重入次數(shù)

Redisson 分布式鎖可重入的原理,Redis,分布式,redis文章來源地址http://www.zghlxwxcb.cn/news/detail-824120.html

  • 獲取鎖和釋放鎖的原子性:Lua 腳本

到了這里,關于Redisson 分布式鎖可重入的原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Redisson】Redisson--分布式中幾種鎖

    Redisson系列文章: 【Redisson】Redisson–基礎入門 【Redisson】Redisson–布隆(Bloom Filter)過濾器 【Redisson】Redisson–分布式鎖的使用(推薦使用) 【分布式鎖】Redisson分布式鎖底層原理 【Redisson】Redisson–限流器、 【Redisson】Redisson–分布式遠程服務(Remote Service) 【Redisson】Redisson–

    2024年02月13日
    瀏覽(22)
  • Redisson—分布式對象

    每個Redisson對象實例都會有一個與之對應的Redis數(shù)據(jù)實例,可以通過調(diào)用getName方法來取得Redis數(shù)據(jù)實例的名稱(key)。 所有與Redis key相關的操作都歸納在RKeys這個接口里: Redisson的分布式RBucketJava對象是一種通用對象桶可以用來存放任類型的對象。 除了同步接口外,還提供了異

    2024年02月07日
    瀏覽(20)
  • Redisson分布式鎖

    Redisson分布式鎖

    Redisson是一個在Redis的基礎上實現(xiàn)的Java駐內(nèi)存數(shù)據(jù)網(wǎng)格,可參考Redisson官方文檔使用,它不僅提供了一系列的分布式的Java常用對象,還提供了許多分布式服務。 簡單來說,就是直接 RLock rlock = redissonClient.getLock(“l(fā)ock”); 獲取到鎖,然后lock()和unlock()即可。 并發(fā)達到了660,比之

    2024年02月16日
    瀏覽(21)
  • Redisson 分布式鎖

    Redisson 分布式鎖

    Redis是基礎客戶端庫,可用于執(zhí)行基本操作。 Redisson是基于Redis的Java客戶端,提供高級功能如分布式鎖、分布式集合和分布式對象。 Redisson提供更友好的API,支持異步和響應式編程,提供內(nèi)置線程安全和失敗重試機制。 實現(xiàn)步驟: 通過導入坐標和配置,注入RedissonClient對象之

    2024年02月11日
    瀏覽(30)
  • 運用分布式鎖 redisson

    導入依賴 根據(jù)springboot版本不同自行選擇版本 dependency groupIdorg.redisson/groupId artifactIdredisson-spring-boot-starter/artifactId version3.15.3/version /dependency 創(chuàng)建客戶端

    2024年01月19日
    瀏覽(24)
  • 【Redisson】Redisson--分布式遠程服務(Remote Service)

    【Redisson】Redisson--分布式遠程服務(Remote Service)

    Redisson系列文章: 【Redisson】Redisson–基礎入門 【Redisson】Redisson–布隆(Bloom Filter)過濾器 【Redisson】Redisson–分布式鎖的使用(推薦使用) 【分布式鎖】Redisson分布式鎖底層原理 【Redisson】Redisson–限流器 當前有兩臺服務器連接的是同一個Redisson中間件,這兩臺服務器叫它們

    2024年02月13日
    瀏覽(21)
  • SpringBoot+Redisson分布式鎖

    org.redisson.config.Config類是Redisson框架中用于配置Redisson客戶端的類。以下是一些常用的配置項: codec(編碼) :默認值是org.redisson.codec.JsonJacksonCodec,用于定義與Redis交互時使用的編解碼器。 useSingleServer :設置為true時,將使用單節(jié)點模式進行連接。 useMasterSlave :設置為true時,

    2024年01月19日
    瀏覽(25)
  • Redisson實現(xiàn)分布式鎖示例

    Redisson實現(xiàn)分布式鎖示例

    可以下載redis desktop manager軟件來查看redis里面存放的東西 紅色框內(nèi)的TTL值就是過期時間,默認-1,表示永不過期,指定過期時間后就變成你指定的值了。 上面的方法,我們讓線程睡眠60S,代表我們的業(yè)務執(zhí)行時間,在調(diào)用這個方法時,我們可以在 redis desktop manager軟件上實時查

    2024年02月12日
    瀏覽(22)
  • redisson+aop實現(xiàn)分布式鎖

    基于注解實現(xiàn),一個注解搞定緩存 Aop:面向切面編程,在不改變核心代碼的基礎上實現(xiàn)擴展,有以下應用場景 ①事務 ②日志 ③controlleradvice+expetcationhandle實現(xiàn)全局異常 ④redissson+aop實現(xiàn)分布式鎖 ⑤認證授權 Aop的實現(xiàn)存在與bean的后置處理器beanpostprocessAfterinitlazing 注解的定義仿照

    2024年01月19日
    瀏覽(27)
  • redis的分布式事務-redisson

    redis的分布式事務-redisson

    Redisson分布式鎖是一種基于redis實現(xiàn)的分布式鎖,它利用redis的setnx命令實現(xiàn)分布式鎖的互斥訪問。同時還支持鎖的自動續(xù)期功能,可以避免因為某個進程崩潰或者網(wǎng)絡故障導致鎖無法釋放的情況。 只要線程一加鎖成功,就會啟動一個watch dog看門狗,它是一個后臺線程,會每隔

    2024年02月13日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包