Spring Boot 如何快速集成 Redis 哨兵?

存储 存储软件 Redis
Redis Sentinel 介绍Redis Sentinel:哨兵,放哨,看中文名字就知道它是一种 Redis 高可用解决方案,主要是针对 Redis 主从模式实现主从节点监控、故障自动切换。

[[340467]]

Redis Sentinel 介绍

Redis Sentinel:哨兵,放哨,看中文名字就知道它是一种 Redis 高可用解决方案,主要是针对 Redis 主从模式实现主从节点监控、故障自动切换。

没有 Redis Sentinel 架构之前,如果主节点挂了,需要运维人员手动进行主从切换,然后更新所有用到的 Redis IP 地址参数再重新启动系统,所有恢复操作都需要人为干预,如果半夜挂了,如果系统很多,如果某个操作搞错了,等等,这对运维人员来说简直就是恶梦。

有了 Redis Sentinel,主从节点故障都是自动化切换,应用程序参数什么也不用改,对于客户端来说都是透明无缝切换的,运维人员再也不用担惊受怕了。

如一个 1 主 3 从的 Redis 架构如下:

 

加入 Redis 哨兵之后的架构如下:

 

为了保证 Redis Sentinel 架构自身的高可用性,自身也不能有单点,一般也要由 3 个或以上 Sentinel 节点组成,一起负责监控主从节点,当大部分 Sentinel 节点认为主节点不可用时,会选一个 Sentinel 节点进行故障切换。

哨后架构的搭建这里不展开了,大家可以移步公众号Java技术栈,关于 Redis 单机、哨后、集群的搭建、以及往期 Redis 和 Spring Boot 集成、分布式锁实战教程等在公众号Java技术栈后台回复redis进行翻阅。

Spring Boot & Redis Sentinel 实战

搞懂了 Redis 哨兵的用处之后,再来看一下 Spring Boot 如何快速集成 Redis Sentinel。

要知道如何自动配置 Redis Sentinel,除了看官方教程(不一定详细),最好的方式就是看源码了。

看过上篇的都知道 Spring Boot Redis 的默认客户端是:Lettuce,我们再来看下 LettuceConnectionFactory 的自动配置源码:

 

  1. org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration 

 

如源码所示,我们可以知道 Redis 连接自动配置的优先顺序是:

Redis Sentinel(哨兵) > Redis Cluster(集群) > Standalone(单机)

哨兵模式优先极是最高的,再来看下 getSentinelConfig 方法源码:

 

master、sentinels 是必须参数,password、SentinelPassword 是可选的,database 默认是第 0 个数据库。

配置参数源码:

 

  1. org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel 

 

所以,我们只需要提供 Redis Sentinel 的基本配置参数即可。

application.yml 配置如下:

 

  1. # 关注公众号Java技术栈看更多 
  2. spring: 
  3.   profiles: 
  4.     active: sentinel 
  5.  
  6. --- 
  7. spring: 
  8.   profiles: standalone 
  9.   redis: 
  10.     host: 192.168.1.110 
  11.     port: 6379 
  12.     password: redis2020 
  13.     database: 1 
  14.  
  15. --- 
  16. spring: 
  17.   profiles: sentinel 
  18.   redis: 
  19.     password: redis2020 
  20.     sentinel: 
  21.       master: mymaster 
  22.       nodes: 
  23.         - 192.168.1.110:26379 
  24.         - 192.168.1.111:26379 
  25.         - 192.168.1.112:26379 

这样就能在单机和哨兵模式下切换,这是 yaml 配置的优势,一个文件搞定多套环境配置,不熟悉的关注公众号Java技术栈阅读我写的 Spring Boot 系列文章,当然这里配置两套只是为了测试,实际项目这样做没有意义。

配置成功后,该怎么使用还是怎么使用了,Redis Sentinel 对于客户端来说是透明的。

本文转载自微信公众号「 Java技术栈」,可以通过以下二维码关注。转载本文请联系 Java技术栈公众号。

 

责任编辑:武晓燕 来源: Java技术栈
相关推荐

2020-07-14 11:00:12

Spring BootRedisJava

2024-01-16 08:17:29

Mybatis验证业务

2018-11-02 15:45:41

Spring BootRedis数据库

2021-12-28 11:13:05

安全认证 Spring Boot

2022-07-11 09:36:38

SpringJava开发

2018-05-04 15:27:22

Spring Boo Web开发

2020-12-01 08:32:12

Spring Boot

2024-09-27 08:25:47

2023-01-10 07:52:15

2019-12-03 11:00:08

spring bootspring-kafkJava

2021-01-05 05:36:39

设计Spring Boot填充

2024-07-16 08:38:06

2022-11-18 08:31:56

Spring日志工具

2017-04-17 10:35:40

Spring BooRedis 操作

2009-06-19 15:52:58

Struts和Spri

2022-07-11 09:00:37

依赖配置文件Mybati

2024-08-05 08:45:35

SpringKafkaSCRAM

2021-08-06 08:04:14

Spring Boot自动配置

2023-09-27 06:26:07

2019-03-28 11:07:56

Spring BootRedis缓存
点赞
收藏

51CTO技术栈公众号