基于SpringBoot1X+JedisSentinelPool 实现哨兵模式
- 简介
Redis的哨兵模式是一种高可用的方案,可以保证在主服务器宕机的情况下,从服务器可以自动接替主服务器的工作。在实际应用中,哨兵模式通常被用于Redis的高可用方案中,保证Redis的高可用性。
本文将介绍如何基于SpringBoot1.X+JedisSentinelPool实现Redis的哨兵模式。
- 实现步骤
(1)添加redis和jedis的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
(2)配置redis哨兵
spring:
redis:
sentinel:
master: mymaster # 哨兵模式下的主节点名称
nodes: 127.0.0.1:26379,127.0.0.1:26380 # 哨兵节点列表
pool:
max-active: 8 # 连接池最大连接数
max-idle: 8 # 连接池最大空闲连接数
min-idle: 0 # 连接池最小空闲连接数
max-wait: -1ms # 连接池最大等待时间
(3)配置JedisSentinelPool
@Configuration
public class RedisConfig {
@Autowired
private RedisProperties redisProperties;
@Bean
public JedisSentinelPool jedisSentinelPool() {
RedisProperties.Sentinel sentinel = redisProperties.getSentinel();
Set<String> sentinelSet = new HashSet<>(Arrays.asList(sentinel.getNodes().split(",")));
String masterName = sentinel.getMaster();
String password = redisProperties.getPassword();
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(redisProperties.getPool().getMaxActive());
jedisPoolConfig.setMaxIdle(redisProperties.getPool().getMaxIdle());
jedisPoolConfig.setMinIdle(redisProperties.getPool().getMinIdle());
jedisPoolConfig.setMaxWaitMillis(redisProperties.getPool().getMaxWait().toMillis());
return new JedisSentinelPool(masterName, sentinelSet, jedisPoolConfig, password);
}
}
(4)使用JedisSentinelPool
@Service
public class RedisService {
@Autowired
private JedisSentinelPool jedisSentinelPool;
public void set(String key, String value) {
try (Jedis jedis = jedisSentinelPool.getResource()) {
jedis.set(key, value);
}
}
public String get(String key) {
try (Jedis jedis = jedisSentinelPool.getResource()) {
return jedis.get(key);
}
}
}
- 总结
本文介绍了如何基于SpringBoot1.X+JedisSentinelPool实现Redis的哨兵模式。通过配置JedisSentinelPool,我们可以很方便地实现Redis的高可用,保证应用的可靠性
原文地址: https://www.cveoy.top/t/topic/d4u2 著作权归作者所有。请勿转载和采集!