环境要求
组件 | 版本 |
---|---|
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;
}
}
优化点说明:
- 使用Java Stream优化节点地址处理
- 增加连接池高级配置参数
- 完善注释说明关键配置项
- 规范日志输出格式
二、配置文件调整
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...]
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 # 节点响应超时
评论0
暂时没有评论