1. 引入依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>
  1. 配置哨兵模式

在application.properties中配置哨兵模式,例如:

spring.redis.sentinel.master=master
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381

其中,spring.redis.sentinel.master为哨兵模式中的主节点名称,spring.redis.sentinel.nodes为哨兵节点的地址列表。

  1. 配置RedisTemplate

在配置类中添加以下代码:

@Configuration
public class RedisConfig {

    @Value("${spring.redis.sentinel.master}")
    private String masterName;

    @Value("${spring.redis.sentinel.nodes}")
    private String sentinelNodes;

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(jedisConnectionFactory());
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return redisTemplate;
    }

    public JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(sentinelConfig(), jedisPoolConfig());
        jedisConnectionFactory.setPassword("password"); // 如果有密码,设置密码
        return jedisConnectionFactory;
    }

    public RedisSentinelConfiguration sentinelConfig() {
        RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration();
        sentinelConfig.master(masterName);
        sentinelConfig.setSentinels(createSentinels(sentinelNodes));
        return sentinelConfig;
    }

    public Set<RedisNode> createSentinels(String sentinelNodes) {
        Set<RedisNode> nodes = new HashSet<>();
        String[] array = sentinelNodes.split(",");
        for (String str : array) {
            nodes.add(new RedisNode(str.split(":")[0], Integer.parseInt(str.split(":")[1])));
        }
        return nodes;
    }

    public JedisPoolConfig jedisPoolConfig() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(500);
        jedisPoolConfig.setMaxIdle(100);
        jedisPoolConfig.setMinIdle(50);
        jedisPoolConfig.setMaxWaitMillis(5000);
        return jedisPoolConfig;
    }
}

其中,RedisTemplate用于操作Redis,JedisConnectionFactory用于创建连接,RedisSentinelConfiguration用于配置哨兵模式,JedisPoolConfig用于配置连接池。

  1. 测试Redis主从同步

在测试类中添加以下代码:

@Autowired
private RedisTemplate<String, Object> redisTemplate;

@Test
public void test() {
    redisTemplate.opsForValue().set("key", "value");
    String value = (String) redisTemplate.opsForValue().get("key");
    System.out.println(value);
}

运行测试类,如果输出为value,则说明Redis主从同步成功

SpringBoot1X+ RedisTemplate + JedisSentinelPool连接池方式实现Redis主从同步+哨兵模式配置

原文地址: https://www.cveoy.top/t/topic/en8Z 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录