专栏首页Java技术栈Spring Boot 如何快速集成 Redis 哨兵?

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

Java技术栈

上一篇:Spring Boot 如何快速集成 Redis?

前面的分享栈长介绍了如何使用 Spring Boot 快速集成 Redis,上一篇是单机版,也有粉丝留言说有没有 Redis Sentinel 的集成教程,这篇开搞!

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 的自动配置源码:

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

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

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

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

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

配置参数源码:

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

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

application.yml 配置如下:

# 关注公众号Java技术栈看更多
spring:
  profiles:
    active: sentinel

---
spring:
  profiles: standalone
  redis:
    host: 192.168.1.110
    port: 6379
    password: redis2020
    database: 1

---
spring:
  profiles: sentinel
  redis:
    password: redis2020
    sentinel:
      master: mymaster
      nodes:
        - 192.168.1.110:26379
        - 192.168.1.111:26379
        - 192.168.1.112:26379

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

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

本文分享自微信公众号 - Java技术栈(javastack),作者:栈长

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 掌握这些 Redis 技巧,百亿数据量不在话下!

    实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面。

    Java技术栈
  • 史上最全Redis面试题及答案。

    花了大量时间 整理了这套Redis面试题 首发50题,绝无仅有 从入门到精通 从基础,高级知识点 再到集群,运维,方案… 弄明白了这些题 可以说可以成为面霸了 ...

    Java技术栈
  • 史上最全 50 道 Redis 面试题

    Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到...

    Java技术栈
  • Redis数据库安全手册

    Redis是一个高性能的key-value数据库,这两年可谓火的不行。而Redis的流行也带来一系列安全问题,不少攻击者都通过Redis发起攻击。本文将讲解这方...

    FB客服
  • 我们为什么使用 Redis?

    如果你从来没使用过 Redis 数据库,那你肯定会问,为什么我们要用 Redis 数据库,我只使用 MySQL 或 Oracle 就够了。其实 Redis 虽叫...

    CSDN技术头条
  • 【redis学习】高级键管理

    为了更有效地在应用程序中使用 Redis ,我们需要理解 Redis 是如何存储键的,并了解用于操作 Redis 实例中键空间的命令。

    看、未来
  • Redis 创始人宣布退居二线:我写代码只是为了表达自己!

    前几日,Redis 创始人 Salvatore Sanfilippo 在他的个人博客(http://antirez.com/)上宣布将结束自己的 Redis 之...

    程序猿DD
  • 如何在云开发Cloudbase中使用Redis?

    云开发 Cloudbase 是腾讯云为移动开发者提供的云原生一体化应用开发平台,可用于开发多种客户端,它帮助开发者统一构建和管理资源,免去了应用开发过程中繁琐的...

    腾讯云开发TCB
  • Gavin老师:分布式缓存Redis高级应用实战(艾编程精品视频)

    【学完本节课你将掌握如下知识】 1、分布式缓存中间件选型 2、Redis作为单线程模式为什么效能还这么高? 3、Redis服务安装机常用命令解析 4、如...

    艾编程
  • 有了它,Redis不再是你技术面试中的阻碍

    Redis在互联网技术存储方面使用非常广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对求职小伙伴们进行各种刁难,特别是那些优秀的、竞争激烈的大型...

    博文视点Broadview

扫码关注云+社区

领取腾讯云代金券