若依分離版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;
}
}
優化點說明:
- 使用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 # 節點響應超時

浙公網安備 33010602011771號