若依分离版Redis集群配置指南

环境要求

组件 版本
JDK 17
Maven 3.9.4
Ruoyi 3.8.9

一、Redisson集群配置优化

1.1 配置类修改说明

package com.aspire.datasynchron.framework.config;

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.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 {

    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() {
        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. 使用Java Stream优化节点地址处理
  2. 增加连接池高级配置参数
  3. 完善注释说明关键配置项
  4. 规范日志输出格式

二、配置文件调整

2.1 application-prod.yml 配置示例

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
    password: ${REDIS_PASSWORD:}  # 支持环境变量注入
    timeout: 5000ms

配置说明:

参数 说明 默认值
cluster.nodes 集群节点地址列表(必须包含端口) 必填
password Redis认证密码
timeout 全局操作超时时间 5000ms

三、依赖管理要求

3.1 Maven依赖调整

<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.45.1</version>
</dependency>

注意事项:

​ 推荐使用Redisson 3.16.x以上版本


四、验证与测试

4.1 启动验证

观察应用启动日志,应包含如下关键信息:

Initializing Redisson cluster client...
Cluster nodes initialized: [10.120.75.50:7400, 10.120.75.50:7401...]

image

4.2 健康检查

访问 /actuator/health 端点,应看到:

{
  "status": "UP",
  "components": {
    "redis": {
      "status": "UP",
      "details": {
        "clusterNodes": 6,
        "masterNodes": 3
      }
    }
  }
}

五、高级配置建议

5.1 性能调优参数

spring:
  redis:
    cluster:
      scanInterval: 5000  # 集群状态扫描间隔
      loadBalanceStrategy: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
      nodeTimeout: 15000  # 节点响应超时
posted @ 2025-04-25 10:45  ghostmen  阅读(505)  评论(0)    收藏  举报