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

redis解決高并發(fā)看門狗策略的實現(xiàn)

 更新時間:2025年02月19日 08:27:36   作者:小湯猿人類  
本文主要介紹了redis解決高并發(fā)看門狗策略的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

當一個業(yè)務(wù)執(zhí)行時間超過自己設(shè)定的鎖釋放時間,那么會導致有其他線程進入,從而搶到同一個票,所有需要使用看門狗策略,其實就是開一個守護線程,讓守護線程去監(jiān)控key,如果到時間了還未結(jié)束,就會將這個key重新set一次,重置到原來的時間,只要主線程未結(jié)束,守護線程就會一直存在,這里還是會有一些問題,就是如果redis宕機了,導致第一個線程拿到了鎖,第二個線程也拿到了鎖,為了解決這個就需要引入紅鎖

1. 導入依賴,這里導入依賴可能會和原先的redis依賴沖突,所以只能留下一個,不然可能會出錯

去除spring-boot-starter-data-redis

  <!-- 集成Redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

添加redisson

            <dependency>
                <groupId>org.redisson</groupId>
                <artifactId>redisson-spring-boot-starter</artifactId>
                <version>3.21.0</version>
            </dependency>

2. 修改配置文件,將之前的配置緩存redisson的

spring:
  data:
    redis: # redis配置
      url: redis://:127.0.0.1:6379

3. 開始分布式鎖-看門狗策略,找到高頻訪問的業(yè)務(wù)添加以下代碼

在業(yè)務(wù)方法開始的頭添加

在方法末尾添加釋放鎖,別忘了添加try-catch-finally塊

這是一段完整的分布式處理,有需要直接copy后修改即可

  public void doConfirm(ConfirmOrderDoReq req) {
        String lockKey = DateUtil.formatDate(req.getDate()) + "-" + req.getTrainCode();
        RLock lock = null;
        try {
            lock = redissonClient.getLock(lockKey);

            boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);

            if (tryLock) {
                LOG.info("搶到鎖,開始處理訂單");
            } else {
                LOG.info("很遺憾,沒有搶到鎖");
                //當前搶票人數(shù)多,請稍后再試
                throw new BusinessException(BusinessExceptionEnum.CONFIRM_ORDER_LOCK_FAIL);
            }
            //業(yè)務(wù)處理。。。。

        } catch (InterruptedException e) {
            LOG.error("搶票失敗", e);
            throw new BusinessException(BusinessExceptionEnum.CONFIRM_ORDER_LOCK_FAIL);
        } finally {
            LOG.info("鎖被釋放了");
            // 釋放鎖
            if (lock != null && lock.isHeldByCurrentThread()){
                lock.unlock();
            }
        }
    }

到此這篇關(guān)于redis解決高并發(fā)看門狗策略的實現(xiàn)的文章就介紹到這了,更多相關(guān)redis 高并發(fā)看門狗策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Redis中如何保存時間序列數(shù)據(jù)詳解

    在Redis中如何保存時間序列數(shù)據(jù)詳解

    與發(fā)生時間相關(guān)的一組數(shù)據(jù),就是時間序列數(shù)據(jù),這些數(shù)據(jù)的特點是沒有嚴格的關(guān)系模型,記錄的信息可以表示成鍵和值的關(guān)系,這篇文章主要給大家介紹了關(guān)于在Redis中如何保存時間序列數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2021-10-10
  • Redis不僅僅是緩存,還是……

    Redis不僅僅是緩存,還是……

    Redis是一個開源的(BSD協(xié)議),內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)存儲,它可以用作數(shù)據(jù)庫,緩存,消息代理。這篇文章主要介紹了Redis不僅僅是緩存,還是……,需要的朋友可以參考下
    2020-12-12
  • Redis數(shù)據(jù)庫的應(yīng)用場景介紹

    Redis數(shù)據(jù)庫的應(yīng)用場景介紹

    這篇文章主要介紹了Redis數(shù)據(jù)庫的應(yīng)用場景介紹,本文講解了MySql+Memcached架構(gòu)的問題、Redis常用數(shù)據(jù)類型、Redis數(shù)據(jù)類型應(yīng)用和實現(xiàn)方式、Redis實際應(yīng)用場景等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • redistemplate下opsForHash操作示例

    redistemplate下opsForHash操作示例

    這篇文章主要為大家介紹了redistemplate下opsForHash操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Redis鎖與DB鎖的使用與區(qū)別小結(jié)

    Redis鎖與DB鎖的使用與區(qū)別小結(jié)

    本文主要介紹了Redis鎖與DB鎖的使用與區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • Redis如何存儲對象與集合示例詳解

    Redis如何存儲對象與集合示例詳解

    redis是一個key-value存儲系統(tǒng)。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、 zset(sorted set --有序集合)和hash(哈希類型)本文介紹了關(guān)于Redis是如何存儲對象與集合的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • Redis序列化反序列化不一致導致String類型值多了雙引號問題

    Redis序列化反序列化不一致導致String類型值多了雙引號問題

    這篇文章主要介紹了Redis序列化反序列化不一致導致String類型值多了雙引號問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Redis反序列化失敗的解決方法

    Redis反序列化失敗的解決方法

    在使用Redis緩存數(shù)據(jù)的過程中,有時會遇到反序列化失敗的問題,本文主要介紹了Redis反序列化失敗的解決方法,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • redis添加key幾種方式

    redis添加key幾種方式

    本文主要介紹了redis添加key幾種方式,主要介紹了3種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Redis中LRU淘汰策略的深入分析

    Redis中LRU淘汰策略的深入分析

    這篇文章主要給大家介紹了關(guān)于Redis中LRU淘汰策略的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06

最新評論

科技| 交口县| 竹溪县| 长治县| 普陀区| 积石山| 手游| 阜城县| 株洲市| 临湘市| 永善县| 金沙县| 麻城市| 沙雅县| 涪陵区| 霞浦县| 理塘县| 彰化市| 都江堰市| 老河口市| 开封市| 德惠市| 富平县| 洛川县| 焉耆| 库车县| 黑河市| 施秉县| 萨迦县| 寿宁县| 合肥市| 宜良县| 迭部县| 南昌县| 汶川县| 山西省| 司法| 历史| 枣阳市| 河津市| 肥城市|