生产环境redis一直处于单节点运行模式,如果出现故障,则会无法提供服务,因此需要提高redis服务的高可用性,因为本身访问量并不是十分大,另外并无运维人力投入进行维护,因此并不考虑集群方案。通过综合考虑研究采用redis主从,加上redis sentinel组件搭建高可用的redis方案。
redis主从保证了数据的可靠性,而redis sentinel可以提升其可用性。redis sentinel为redis主从集群提供了:1)master存活检测、2)集群主从服务监控、3) 自动故障转移
一般情况下,最小redis主从集群单元由一个maste和slave组成,当master失效后,sentinel可以帮助我们自动将slave提升为master;有了sentinel组件,可以减少系统管理员的人工切换slave的操作过程。
但是一般情况下,主从分别部署在不同的服务器上,对外服务IP不同,当sentinel进行了主从切换后,应用程序如何切换访问新的master。而实际上应用程序可以通过访问sentinel获取最新master,从而达到无缝的切换(Jedis提供了JedisSentinelPool,但在主从切换后需主动重新获取新的连接;而spring-data-redis中使用RedisTemplates进行调用不会有该问题,具体见后面章节)