SpringBoot 1.X 集成 Redis 哨兵模式:高可用性实践

Redis 哨兵模式为 Redis 集群提供高可用性保障,能够在主节点宕机的情况下自动将从节点提升为主节点,确保服务的正常运行。本文将介绍如何在 SpringBoot 1.X 应用中配置和使用 Redis 哨兵模式,实现高可用性。

1. 环境准备

  • JDK 8+
  • SpringBoot 1.X
  • Redis 3.0+
  • Redis Sentinel 3.0+

2. 配置 Redis 哨兵

在 Redis 主从模式的基础上,Redis 哨兵模式需要额外配置哨兵节点。哨兵节点监控 Redis 主从节点状态,在主节点宕机或故障转移时,自动将从节点提升为主节点。

在 Redis 配置文件 redis.conf 中,添加以下哨兵相关配置:

# 开启哨兵模式
sentinel monitor mymaster 127.0.0.1 6379 2
# 设置哨兵节点数量
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
  • sentinel monitor 指定监控的主节点名称、IP 地址、端口号以及至少需要多少个哨兵节点确认主节点宕机。
  • sentinel down-after-milliseconds 指定哨兵节点判断主节点宕机的时间,默认为 30 秒。
  • sentinel failover-timeout 指定哨兵节点进行故障转移的超时时间,默认为 3 分钟。
  • sentinel parallel-syncs 指定故障转移时,同时同步数据的从节点数量,默认为 1。

注意:Redis 哨兵模式需要至少 3 个哨兵节点才能保证高可用性。

3. 配置 SpringBoot 应用程序

在 SpringBoot 应用程序中,需要添加以下依赖:

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

然后,添加 Redis 配置文件 application.properties

# 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.sentinel.master 指定监控的主节点名称,必须与 Redis 哨兵配置文件中的名称一致。
  • spring.redis.sentinel.nodes 指定哨兵节点的 IP 地址和端口号,多个节点之间用逗号分隔。

4. 编写 Redis 操作代码

在 SpringBoot 应用程序中,可以使用 RedisTemplate 进行 Redis 操作。RedisTemplate 是 Spring 提供的 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);
    }
}
  • 使用 @Autowired 注解自动注入 RedisTemplate 对象。
  • 通过 RedisTemplateopsForValue() 方法获取 ValueOperations 对象,进行 Redis 的读写和删除操作。

5. 测试 Redis 哨兵模式

在 SpringBoot 应用程序中,可以通过 RedisService 测试 Redis 的读写和删除操作。

@RestController
public class RedisController {
    
    @Autowired
    private RedisService redisService;
    
    @RequestMapping("/set")
    public String set(String key, String value) {
        redisService.set(key, value);
        return "success";
    }
    
    @RequestMapping("/get")
    public String get(String key) {
        Object result = redisService.get(key);
        return result == null ? "null" : result.toString();
    }
    
    @RequestMapping("/delete")
    public String delete(String key) {
        redisService.delete(key);
        return "success";
    }
}
  • 通过 @RestController 注解将 RedisController 注册为 SpringBoot 应用程序的控制器。
  • 分别编写 /set/get/delete 接口,用于测试 Redis 的读写和删除操作。

6. 启动 SpringBoot 应用程序

完成以上步骤后,启动 SpringBoot 应用程序,访问 /set/get/delete 接口,进行 Redis 的读写和删除操作。

总结

本文介绍了如何在 SpringBoot 1.X 应用中配置和使用 Redis 哨兵模式,实现 Redis 集群的高可用性。通过以上步骤,可以快速搭建 Redis 哨兵集群,提高 Redis 的可用性和稳定性。

SpringBoot 1.X 集成 Redis 哨兵模式:高可用性实践

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

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