以下是使用 SpringBoot + Redis 哨兵模式和 JedisSentinelPool 操作数据的示例代码:

  1. 添加 Maven 依赖

在 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>3.5.2</version>
</dependency>
  1. 添加 Redis 配置

在 application.yml 或 application.properties 文件中添加 Redis 配置:

spring:
  redis:
    sentinel:
      master: 'mymaster' # Redis 哨兵模式的主节点名称
      nodes: # Redis 哨兵模式的节点列表
        - redis://127.0.0.1:26379
        - redis://127.0.0.1:26380
        - redis://127.0.0.1:26381
      password: '123456' # Redis 密码
    pool:
      max-active: 8 # 连接池最大连接数
      max-idle: 8 # 连接池最大空闲连接数
      min-idle: 0 # 连接池最小空闲连接数
      max-wait: -1ms # 连接池最大等待时间
  1. 创建 Redis 配置类

创建一个 RedisConfig 类,注入 Redis 连接池和 RedisTemplate:

@Configuration
public class RedisConfig {

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

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

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

    @Value("${spring.redis.pool.max-active}")
    private int maxActive;

    @Value("${spring.redis.pool.max-idle}")
    private int maxIdle;

    @Value("${spring.redis.pool.min-idle}")
    private int minIdle;

    @Value("${spring.redis.pool.max-wait}")
    private String maxWait;

    @Bean
    public JedisSentinelPool jedisSentinelPool() {
        Set<String> sentinelSet = new HashSet<>(Arrays.asList(sentinelNodes.split(",")));
        return new JedisSentinelPool(masterName, sentinelSet, password, new GenericObjectPoolConfig());
    }

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

    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        return new JedisConnectionFactory(jedisSentinelPool(), new JedisClientConfigurationBuilder()
                .usePooling()
                .poolConfig(new GenericObjectPoolConfig())
                .build());
    }
}
  1. 编写 Redis 操作类

创建一个 RedisService 类,注入 RedisTemplate 并编写操作 Redis 的方法:

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    public void set(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    public void delete(String key) {
        redisTemplate.delete(key);
    }
}
  1. 测试 Redis 操作

创建一个测试类,注入 RedisService 并调用 Redis 操作方法:

@SpringBootTest
class RedisServiceTest {

    @Autowired
    private RedisService redisService;

    @Test
    void setAndGet() {
        redisService.set("name", "Tom");
        Object value = redisService.get("name");
        Assert.assertEquals("Tom", value.toString());
    }

    @Test
    void delete() {
        redisService.delete("name");
        Object value = redisService.get("name");
        Assert.assertNull(value);
    }
}

这样就完成了使用 SpringBoot + Redis 哨兵模式和 JedisSentinelPool 操作数据的示例。

注意:

  • 请根据实际情况替换 Redis 配置中的参数,例如:master 节点名称、哨兵节点列表和 Redis 密码。
  • 确保 Redis 哨兵模式已正确配置,并且哨兵节点可以正常连接到主节点。
  • 如果需要使用其他 Redis 数据结构,例如:列表、集合或有序集合,请参考 RedisTemplate 的相关 API 文档。

希望本教程能够帮助您更好地理解使用 SpringBoot、Redis 哨兵模式和 JedisSentinelPool 进行 Redis 操作。

SpringBoot + Redis 哨兵模式: 使用 JedisSentinelPool 操作数据

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

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