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

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

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

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

1. 導(dǎo)入依賴(lài),這里導(dǎo)入依賴(lài)可能會(huì)和原先的redis依賴(lài)沖突,所以只能留下一個(gè),不然可能會(huì)出錯(cuò)

去除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. 開(kāi)始分布式鎖-看門(mén)狗策略,找到高頻訪問(wèn)的業(yè)務(wù)添加以下代碼

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

在方法末尾添加釋放鎖,別忘了添加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("搶到鎖,開(kāi)始處理訂單");
            } else {
                LOG.info("很遺憾,沒(méi)有搶到鎖");
                //當(dāng)前搶票人數(shù)多,請(qǐng)稍后再試
                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ā)看門(mén)狗策略的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)redis 高并發(fā)看門(mén)狗策略?xún)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

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

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

    redistemplate下opsForHash操作示例

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

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

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

    Redis如何存儲(chǔ)對(duì)象與集合示例詳解

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

    Redis序列化反序列化不一致導(dǎo)致String類(lèi)型值多了雙引號(hào)問(wèn)題

    這篇文章主要介紹了Redis序列化反序列化不一致導(dǎo)致String類(lèi)型值多了雙引號(hào)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Redis反序列化失敗的解決方法

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

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

    redis添加key幾種方式

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

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

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

最新評(píng)論

华蓥市| 颍上县| 威远县| 天等县| 章丘市| 江北区| 将乐县| 桂阳县| 梁河县| 化隆| 平远县| 绥江县| 赣榆县| 即墨市| 应城市| 襄垣县| 吉木萨尔县| 湖南省| 潮州市| 云梦县| 浑源县| 山阳县| 大新县| 哈巴河县| 抚宁县| 博湖县| 石城县| 淮北市| 九龙城区| 曲松县| 泰顺县| 叶城县| 耒阳市| 兴业县| 德清县| 新泰市| 皋兰县| 琼结县| 永昌县| 营山县| 深圳市|