国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - redission分布式鎖防止重復初始化問題

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

2020-12-30 17:16黒曼巴 Redis

這篇文章主要介紹了redission分布式鎖防止重復初始化問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

配置地址:

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

創建配置類:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@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:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
   * 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);
  }

防止重復初始化

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
**
   * 初始化告警統計記錄 保證告警統計不會被重復初始化
   *
   * @param areaId 部門id
   * @throws BizException
   */
  public void initWarningStatisticsSafe(String areaId) throws BizException {
  //創建鎖名稱
    String lockName = generateInitWarningStatisticsLockName(areaId);
 
    RLock lock = redisClient.getLock(lockName);
    try {
      //嘗試獲取鎖 (最多嘗試10秒,獲取到后15秒后釋放鎖)
      boolean isAcquireLock = lock.tryLock(10, 15, TimeUnit.SECONDS);
      if (!isAcquireLock) {
        logger.error("初始化消息統計 --- 獲取鎖失敗 lockName = " + lockName);
        throw new BizException("系統異常");
      } else {
 
        try {
          //查詢【告警統計】 (能夠查詢到最新的數據,因為默認隔離級別是read committed
          List<WarningStatisticsPO> warningStatisticsPOS = warningStatisticsDAO.selectByArea(areaId);
          if (CollectionUtils.isEmpty(warningStatisticsPOS)) {
            //如果部門不存在告警統計,才進行初始化  initWarningStatistics()會開啟一個新事務
            warningStatisticsService.initWarningStatistics(areaId);
          }
        } finally {
          //釋放鎖 (在事務提交后才釋放鎖。保證其它事務在獲取鎖后能查詢到數據,不會再進行初始化。)
          lock.unlock();
        }
 
      }
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }

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

原文鏈接:https://blog.csdn.net/qq_41434746/article/details/109841021

延伸 · 閱讀

精彩推薦
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
主站蜘蛛池模板: 久久久高清 | 免费成人av在线 | 亚洲精品日韩在线 | 亚洲欧美激情精品一区二区 | 亚洲福利一区二区 | 久久天天躁狠狠躁夜夜免费观看 | 99re6在线视频精品免费 | jizz亚洲女人高潮大叫 | 一区视频 | 亚洲欧美一区二区三区在线 | 九九久久久 | 成人免费视频网 | 日韩福利在线 | 99精品视频网 | 日本一区二区三区四区 | 欧美一区二区三区在线 | 国产一区二区三区在线 | 日本一区二区高清视频 | 亚洲国内精品 | 九九热欧美 | 不卡一区二区三区四区 | 这里只有精品视频 | 国产精品美女久久久久久久网站 | 亚洲午夜视频在线观看 | 久久精品99视频 | 日韩精品91爱爱 | 在线99热| 亚洲精品一区二区三区樱花 | 亚洲国产精品99久久久久久久久 | 在线国产视频 | 中文字幕日韩在线视频 | 91精品久久| 久久av一区二区三区 | 成人av在线网站 | 九九热精品在线 | 国产乱淫精品一区二区三区毛片 | 久久网页 | 一级毛片免费高清 | 亚洲国产精品一区二区三区 | 91黄视频| 午夜av影视 |