SpringBoot JedisConnectionFactory 配置 Redis Sentinel
SpringBoot 2.x 版本的 JedisConnectionFactory 支持设置 RedisSentinelConfiguration,可以通过以下方式进行配置:
- 引入 jedis 和 spring-boot-starter-data-redis 依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>{jedis.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>{springboot.version}</version>
</dependency>
- 在 application.properties 或 application.yml 中配置 Redis Sentinel 的相关信息:
spring.redis.sentinel.master=myMaster
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
- 创建 JedisConnectionFactory Bean,设置 RedisSentinelConfiguration:
@Configuration
public class RedisConfig {
@Value("${spring.redis.sentinel.master}")
private String sentinelMaster;
@Value("${spring.redis.sentinel.nodes}")
private String sentinelNodes;
@Bean
public JedisConnectionFactory jedisConnectionFactory() {
RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
.master(sentinelMaster)
.sentinel(sentinelsFromString(sentinelNodes));
return new JedisConnectionFactory(sentinelConfig);
}
private Set<RedisNode> sentinelsFromString(String sentinels) {
Set<RedisNode> nodes = new HashSet<>();
String[] parts = sentinels.split(",");
for (String part : parts) {
String[] hostAndPort = part.split(":");
nodes.add(new RedisNode(hostAndPort[0], Integer.parseInt(hostAndPort[1])));
}
return nodes;
}
}
以上代码中,RedisSentinelConfiguration 用于配置 Redis Sentinel 的主/从节点信息,JedisConnectionFactory 则使用该配置创建 Jedis 客户端连接工厂。在配置文件中添加 Redis Sentinel 的相关信息,通过 @Value 注解注入到 RedisConfig 中,最终被用于创建 RedisSentinelConfiguration。
原文地址: https://www.cveoy.top/t/topic/omcb 著作权归作者所有。请勿转载和采集!