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

redission分布式鎖防止重復初始化問題

 更新時間:2020年11月20日 11:20:09   作者:黒曼巴  
這篇文章主要介紹了redission分布式鎖防止重復初始化問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

配置地址:

redisson:
 # Redis服務地址 如果集群使用","進行分割
 server-address: redis://${spring.redis.host}:${spring.redis.port}
 database: ${spring.redis.database}

創(chuàng)建配置類:

@ConfigurationProperties(prefix = "redisson")
@Configuration
public class RedissonConfig {
  /** Redis服務地址 如果集群使用","進行分割 */
  private String serverAddress;
  private Integer database;

  public String getServerAddress() {
    return serverAddress;
  }

  public void setServerAddress(String serverAddresss) {
    this.serverAddress = serverAddresss;
  }

  public Integer getDatabase() {
    return database;
  }

  public void setDatabase(Integer database) {
    this.database = database;
  }
}

注冊redission Bean:

/**
   * RedissonClient
   * @return
   */
  @Bean
  public RedissonClient redissonClient(){
    String splitChar = ",";
    String serverAddress = redissonConfig.getServerAddress();
    String[] serverAddressArr = serverAddress.split(splitChar);

    Config config = new Config();
    if (serverAddressArr.length == 1) {
      //單例redis
      config.useSingleServer()
          .setAddress(redissonConfig.getServerAddress())
          .setDatabase(redissonConfig.getDatabase());
    } else {
      //集群redis
      config.useClusterServers().addNodeAddress(serverAddressArr);
    }
    return Redisson.create(config);
  }

防止重復初始化:

**
   * 初始化告警統(tǒng)計記錄 保證告警統(tǒng)計不會被重復初始化
   *
   * @param areaId 部門id
   * @throws BizException
   */
  public void initWarningStatisticsSafe(String areaId) throws BizException {
  //創(chuàng)建鎖名稱
    String lockName = generateInitWarningStatisticsLockName(areaId);

    RLock lock = redisClient.getLock(lockName);
    try {
      //嘗試獲取鎖 (最多嘗試10秒,獲取到后15秒后釋放鎖)
      boolean isAcquireLock = lock.tryLock(10, 15, TimeUnit.SECONDS);
      if (!isAcquireLock) {
        logger.error("初始化消息統(tǒng)計 --- 獲取鎖失敗 lockName = " + lockName);
        throw new BizException("系統(tǒng)異常");
      } else {

        try {
          //查詢【告警統(tǒng)計】 (能夠查詢到最新的數(shù)據(jù),因為默認隔離級別是read committed
          List<WarningStatisticsPO> warningStatisticsPOS = warningStatisticsDAO.selectByArea(areaId);
          if (CollectionUtils.isEmpty(warningStatisticsPOS)) {
            //如果部門不存在告警統(tǒng)計,才進行初始化  initWarningStatistics()會開啟一個新事務
            warningStatisticsService.initWarningStatistics(areaId);
          }
        } finally {
          //釋放鎖 (在事務提交后才釋放鎖。保證其它事務在獲取鎖后能查詢到數(shù)據(jù),不會再進行初始化。)
          lock.unlock();
        }

      }
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

到此這篇關于redission分布式鎖防止重復初始化問題的文章就介紹到這了,更多相關redission分布式鎖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Redis中Lua腳本的應用和實踐

    詳解Redis中Lua腳本的應用和實踐

    這篇文章主要介紹了詳解Redis中Lua腳本的應用和實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 深入理解Redis內存淘汰策略

    深入理解Redis內存淘汰策略

    本文主要介紹了深入理解Redis內存淘汰策略,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Redis過期鍵與內存淘汰策略深入分析講解

    Redis過期鍵與內存淘汰策略深入分析講解

    因為redis數(shù)據(jù)是基于內存的,然而內存是非常寶貴的資源,然后我們就會對一些不常用或者只用一次的數(shù)據(jù)進行存活時間設置,這樣才能提高內存的使用效率,下面這篇文章主要給大家介紹了關于Redis中過期鍵與內存淘汰策略,需要的朋友可以參考下
    2022-11-11
  • Redis如何設置過期時間

    Redis如何設置過期時間

    這篇文章主要介紹了Redis如何設置過期時間問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • SpringBoot 集成Redis 過程

    SpringBoot 集成Redis 過程

    redis是一個開源的、使用C語言編寫的、支持網(wǎng)絡交互的、可基于內存也可持久化的Key-Value數(shù)據(jù)庫。本文給大家介紹SpringBoot 集成Redis 過程,感興趣的朋友一起看看吧
    2021-06-06
  • CentOS 6.5 64位下安裝Redis3.0.2的具體步驟

    CentOS 6.5 64位下安裝Redis3.0.2的具體步驟

    這篇文章主要介紹了CentOS 6.5 64位下安裝Redis3.0.2的具體步驟,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-08-08
  • 淺談redis內存數(shù)據(jù)的持久化方式

    淺談redis內存數(shù)據(jù)的持久化方式

    這篇文章主要介紹了淺談redis內存數(shù)據(jù)的持久化方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Redis的幾種數(shù)據(jù)類型使用詳解

    Redis的幾種數(shù)據(jù)類型使用詳解

    這篇文章主要介紹了Redis的幾種數(shù)據(jù)類型使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • NestJS+Redis實現(xiàn)手寫一個限流器

    NestJS+Redis實現(xiàn)手寫一個限流器

    限流是大型系統(tǒng)必備的保護措施,本文將結合redis , lua 腳本 以及 Nestjs Guard 來實現(xiàn) 限流的效果,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • 淺談Redis緩沖區(qū)機制

    淺談Redis緩沖區(qū)機制

    本文主要介紹淺談Redis緩沖區(qū)機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06

最新評論

教育| 防城港市| 临邑县| 新疆| 万安县| 正定县| 温宿县| 房山区| 深泽县| 绿春县| 临沧市| 荆州市| 平定县| 鄂托克前旗| 保定市| 宜川县| 安远县| 青阳县| 长白| 蒲江县| 临湘市| 清河县| 乌兰县| 虹口区| 革吉县| 丰镇市| 那坡县| 东丽区| 当雄县| 盘锦市| 永城市| 资中县| 绥中县| 滨州市| 阳山县| 萨嘎县| 鹿泉市| 专栏| 永泰县| 万年县| 奉贤区|