<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      若依分離版多環境Redis配置(單機/集群自適應)

      功能概述

      實現Spring Boot項目在本地開發、測試環境和生產環境無縫切換Redis模式,通過統一配置體系適配不同部署場景。

      核心代碼實現

      1. Redisson多模式配置類

      package com.aspire.datasynchron.framework.config;
      
      import com.aspire.datasynchron.common.utils.StringUtils;
      import lombok.extern.slf4j.Slf4j;
      import org.redisson.Redisson;
      import org.redisson.api.RBucket;
      import org.redisson.api.RedissonClient;
      import org.redisson.config.ClusterServersConfig;
      import org.redisson.config.Config;
      import org.redisson.config.SingleServerConfig;
      import org.slf4j.Logger;
      import org.slf4j.LoggerFactory;
      import org.springframework.beans.factory.annotation.Value;
      import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      import javax.annotation.PostConstruct;
      
      /**
       * Redisson 配置類,支持 Redis 集群模式
       *
       * @author ruoyi
       */
      @Configuration
      public class RedissonConfig {
      
          @Value("${spring.redis.mode:single}")  // 默認單機模式
          private String mode;
          // 單機模式配置
          @Value("${spring.redis.host:127.0.0.1}")
          private String host;
      
          @Value("${spring.redis.port:6379}")
          private int port;
          private static final Logger log = LoggerFactory.getLogger(RedissonConfig.class);
      
          @Value("${spring.redis.cluster.nodes:10.120.75.50:7400,10.120.75.50:7401,10.120.75.50:7402,10.120.75.51:7403,10.120.75.51:7404,10.120.75.51:7405}")
          private String clusterNodes; // 集群節點列表,格式:192.168.1.101:7001,192.168.1.102:7002,...
      
          @Value("${spring.redis.password}")
          private String password; // Redis 密碼(可為空)
      
          private RedissonClient redissonClient; // 成員變量
      
          @Bean(destroyMethod = "shutdown")
          @ConditionalOnMissingBean(RedissonClient.class)
          public RedissonClient redissonClient() {
      
              if ("single".equalsIgnoreCase(mode) && StringUtils.isNotBlank(clusterNodes)) {
                  Config config = new Config();
                  String address = "redis://" + host + ":" + port;
                  SingleServerConfig serverConfig = config.useSingleServer()
                          .setAddress(address)
                          .setDatabase(1);
      
                  if (StringUtils.hasText(password)) {
                      serverConfig.setPassword(password);
                  }
      
                  return Redisson.create(config);
              }else {
                  Config config = new Config();
      
                  log.info("Redisson 配置初始化開始...");
                  log.info("集群節點列表: {}", clusterNodes);
      
                  // 配置 Redis 集群模式
                  ClusterServersConfig clusterConfig = config.useClusterServers();
      
                  // 格式化節點地址,添加 redis:// 前綴
                  String[] nodes = clusterNodes.split(",");
                  String[] formattedNodes = new String[nodes.length];
                  for (int i = 0; i < nodes.length; i++) {
                      formattedNodes[i] = "redis://" + nodes[i].trim();
                  }
                  clusterConfig.addNodeAddress(formattedNodes);
      
                  // 如果啟用了密碼認證,則設置密碼
                  if (password != null && !password.isEmpty()) {
                      clusterConfig.setPassword(password);
                  }
      
                  // 可選配置
                  clusterConfig.setScanInterval(2000); // 集群狀態掃描間隔(毫秒)
                  clusterConfig.setIdleConnectionTimeout(10000); // 空閑連接超時時間
                  clusterConfig.setConnectTimeout(10000); // 連接超時時間
                  clusterConfig.setTimeout(3000); // 操作超時時間
      
                  redissonClient = Redisson.create(config); // 保存到成員變量
                  return redissonClient;
              }
          }
      
      }
      
      

      多環境配置示例

      1. 開發/測試環境配置(application-dev.yml)

      spring:
        redis:
          mode: single                   # 單機模式
          host: 127.0.0.1                # Redis地址
          port: 6379                     # Redis端口
          password:                      # 密碼(可選)
          lettuce:
            pool:
              max-active: 8              # 連接池最大連接數
              max-idle: 8                # 最大空閑連接
              min-idle: 0                # 最小空閑連接
      

      2. 生產環境配置(application-prod.yml)

      spring:
        redis:
          mode: cluster                  # 集群模式
          cluster:
            nodes:                       # 集群節點列表(需包含完整地址)
              - 10.120.75.50:7400
              - 10.120.75.50:7401
              - 10.120.75.50:7402
              - 10.120.75.51:7403
              - 10.120.75.51:7404
              - 10.120.75.51:7405
          password: YourProductionPass123# 密碼(生產環境必填)
          lettuce:
            pool:
              max-active: 16             # 連接池最大連接數
              max-idle: 8                # 最大空閑連接
              min-idle: 2                # 最小空閑連接
      

      關鍵優化說明

      1. 智能模式切換
        • 優先識別cluster模式配置
        • 當集群配置缺失時自動降級單機模式
        • 通過@ConditionalOnProperty實現配置隔離
      2. 配置預處理
        • 自動去除節點地址中的冗余協議頭
        • 統一密碼配置入口
        • 地址格式標準化處理
      3. 容錯機制
        • 初始化失敗時拋出明確異常
        • 空值安全處理(密碼、節點列表)
        • 連接參數動態適配
      4. 運維友好設計
        • 詳細啟動日志輸出
        • 配置參數校驗提示
        • 連接池參數分級控制

      部署注意事項

      1. 環境變量覆蓋
        通過啟動參數覆蓋配置:

        java -jar -Dspring.redis.mode=cluster -Dspring.redis.cluster.nodes="..." app.jar
        
      2. 密碼安全
        生產環境建議通過Vault等加密存儲密碼

      3. 節點發現
        集群模式要求至少配置3個主節點地址

      4. 版本兼容
        需Redisson 3.16+ 版本支持最新集群協議


      常見問題排查

      現象 可能原因 解決方案
      連接超時 防火墻限制/地址錯誤 檢查節點可達性
      認證失敗 密碼配置錯誤 檢查密碼特殊字符轉義
      集群初始化失敗 節點不可達/配置格式錯誤 使用redis-cli --cluster check驗證集群狀態
      性能下降 連接池配置不合理 根據QPS調整pool參數

      通過以上優化方案,可實現Redis配置的環境自適應,顯著提升多環境部署的可靠性和維護性。實際部署時建議配合CI/CD流水線進行環境參數注入。

      posted @ 2025-04-25 15:20  ghostmen  閱讀(417)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美拍拍视频免费大全| 娇妻玩4p被三个男人伺候| 一个人看的www视频免费观看| 熟女系列丰满熟妇AV| 国产午夜精品久久久久免费视| 国产一级老熟女自拍视频| 亚洲影院丰满少妇中文字幕无码| 无码人妻丝袜在线视频| 亚洲国产精品老熟女乱码| 人妻丰满熟妇AV无码区乱| 国语精品国内自产视频| 日本夜爽爽一区二区三区| 无套内射极品少妇chinese| 国产蜜臀一区二区在线播放| 亚洲av无码成人精品区一区| 国内精品久久人妻无码不卡| 热久久美女精品天天吊色| 久久午夜无码鲁丝片午夜精品| 激情偷乱人成视频在线观看| 日韩精品av一区二区三区| 高中女无套中出17p| 久热综合在线亚洲精品| 97免费人妻在线视频| 无码少妇一区二区| 东京热人妻丝袜无码AV一二三区观| 欧美最猛性xxxxx大叫| 国产亚洲一区二区三区av| 在国产线视频A在线视频| 一本一道av无码中文字幕﹣百度 | 少妇无码太爽了在线播放| 久久精品人人槡人妻人人玩av| 国产av一区二区亚洲精品| 无码伊人久久大杳蕉中文无码| 国产日产免费高清欧美一区| 91精品国产蜜臀在线观看| 视频一区二区三区中文字幕狠狠 | 国产gaysexchina男外卖| 日韩在线视频线观看一区| 国产精品高清国产三级囯产AV| 日韩精品中文字幕人妻| 日本高清一区二区三|