优化Redis连接配置,支持集群、哨兵和单机模式,同时移除不必要的配置项

This commit is contained in:
刘倡
2025-07-17 13:41:52 +08:00
parent da03c0f02a
commit 2cae924e58
2 changed files with 24 additions and 22 deletions

View File

@ -15,8 +15,10 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisClusterConfiguration;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisOperations;
import org.springframework.data.redis.core.RedisTemplate;
@ -69,10 +71,26 @@ public class RedisLettuceConfig {
}
private LettuceConnectionFactory getLettuceConnectionFactory(Integer db) {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(this.sentinelConfig());
lettuceConnectionFactory.setDatabase(db);
lettuceConnectionFactory.afterPropertiesSet();
return lettuceConnectionFactory;
LettuceConnectionFactory factory;
if (redisProperties.getCluster() != null && redisProperties.getCluster().getNodes() != null && !redisProperties.getCluster().getNodes().isEmpty()) {
// 集群模式
RedisClusterConfiguration clusterConfig = new RedisClusterConfiguration(redisProperties.getCluster().getNodes());
clusterConfig.setPassword(redisProperties.getPassword());
factory = new LettuceConnectionFactory(clusterConfig);
} else if (redisProperties.getSentinel() != null && redisProperties.getSentinel().getNodes() != null && !redisProperties.getSentinel().getNodes().isEmpty()) {
// 哨兵模式
factory = new LettuceConnectionFactory(this.sentinelConfig());
} else {
// 单机模式
RedisStandaloneConfiguration standaloneConfig = new RedisStandaloneConfiguration();
standaloneConfig.setHostName(redisProperties.getHost());
standaloneConfig.setPort(redisProperties.getPort());
standaloneConfig.setPassword(redisProperties.getPassword());
factory = new LettuceConnectionFactory(standaloneConfig);
}
factory.setDatabase(db);
factory.afterPropertiesSet();
return factory;
}
private RedisSentinelConfiguration sentinelConfig() {