RedisSentinel介绍RedisSentinel:哨兵,哨兵,从中文名字就可以看出它是一个Redis高可用方案,主要针对Redis主从模式,实现主从节点监控和故障自动切换。在RedisSentinel架构之前,如果master节点挂了,需要运维人员手动切换主从,然后更新所有使用过的RedisIP地址参数,然后再重启系统。所有恢复操作都需要人工干预。如果半夜挂了,如果有很多系统,如果某个操作出错等等,这简直就是运维人员的噩梦。借助RedisSentinel,主从节点故障自动切换,无需更改应用参数。对于客户端来说,切换是透明无缝的,运维人员再也不用操心了。例如1主3从的Redis架构如下:添加RedisSentinel后的架构如下:为了保证RedisSentinel架构本身的高可用,它不能有单点,一般由3个及以上的Sentinel节点,负责监控主从节点。当大多数Sentinel节点认为主节点不可用时,将选择一个Sentinel节点进行故障转移。后哨建筑的搭建这里就不展开了。可以移步公众号Java技术栈。关于Redis单机、后哨、集群搭建,以及之前的Redis与SpringBoot集成、分布式锁实战教程等在公众号Java技术栈后台回复redis供浏览。SpringBoot&RedisSentinel了解了RedisSentinel的用处之后,我们来看看SpringBoot是如何快速集成RedisSentinel的。想要知道如何自动配置RedisSentinel,除了看官方教程(不一定详细),最好的办法就是看源码。看过上一篇文章的都知道,SpringBootRedis默认的客户端是:Lettuce。我们看一下LettuceConnectionFactory的自动配置源码:org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration源码所示,我们可以知道Redis连接自动配置的优先顺序是:Redis哨兵(sentinel)>RedisCluster(集群)>Standalone(单机)Sentinel模式优先级最高,再看getSentinelConfig方法源码:master和sentinels是必填参数,password和SentinelPassword是Optional,database默认为第0个数据库.配置参数源码:org.springframework.boot.autoconfigure.data.redis.RedisProperties.Sentinel所以,我们只需要提供RedisSentinel的基本配置参数即可。application.yml的配置如下:#关注公众号Java技术栈看更多spring:profiles:active:sentinel---spring:profiles:standaloneredis:host:192.168.1.110port:6379password:redis2020database:1---spring:profiles:sentinelredis:password:redis2020sentinel:master:mymasternodes:-192.168.1.110:26379-192.168.1.111:26379-192.168.1.112:26379这样就可以在单机模式和sentinel模式之间切换,yaml配置的优点是,一个文件获取多套环境配置,不熟悉的可以关注公众号Java技术栈,看我的SpringBoot系列文章。当然这里配置两套只是为了测试,在实际项目中这样做是没有意义的。配置成功后,如何使用,如何使用,RedisSentinel对客户端是透明的。本文转载自微信公众号“Java技术栈”,可通过以下二维码关注。转载本文请联系Java技术栈公众号。
