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. 配置 Redis 哨兵模式

在 application.properties 文件中配置 Redis 哨兵模式相关参数:

# Redis 哨兵模式
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
spring.redis.password=123456
  1. 创建 JedisSentinelPool 对象

在 SpringBoot 项目启动时,创建 JedisSentinelPool 对象并注入到 Spring 容器中:

@Configuration
public class RedisConfig {
    @Value('${spring.redis.sentinel.master}')
    private String masterName;
    @Value('${spring.redis.sentinel.nodes}')
    private String sentinelNodes;
    @Value('${spring.redis.password}')
    private String password;

    @Bean
    public JedisSentinelPool jedisSentinelPool() {
        Set<String> sentinels = new HashSet<>(Arrays.asList(sentinelNodes.split(',')));
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(100);
        poolConfig.setMaxIdle(50);
        poolConfig.setMinIdle(20);
        poolConfig.setMaxWaitMillis(2000);
        JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName, sentinels, poolConfig, password);
        return jedisSentinelPool;
    }
}
  1. 使用 JedisSentinelPool 对象操作数据

在需要使用 Redis 操作的地方,注入 JedisSentinelPool 对象并使用它进行 Redis 操作:

@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);
        }
    }
}

以上代码中,使用 try-with-resources 语句获取 Jedis 对象,确保 Jedis 对象在使用完后自动释放资源。

  1. 测试

在 SpringBoot 项目中编写测试类测试 JedisSentinelPool 对象的使用是否正确:

@SpringBootTest
class RedisSentinelApplicationTests {
    @Autowired
    private RedisService redisService;

    @Test
    void testRedis() {
        String key = 'name';
        String value = 'Tom';
        redisService.set(key, value);
        String result = redisService.get(key);
        assertEquals(value, result);
    }
}

测试通过后,说明 JedisSentinelPool 对象的创建和使用都正确。

SpringBoot 1.X Redis 哨兵模式 JedisSentinelPool 操作数据教程

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

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