刚开始学习的时候有一些误区,以为redis有三种集群模式:主从模式、哨兵模式、cluster模式。

 

再此梳理一下我的简单理解

 

1、单机模式:只有一个redis节点,读写都在其上运行,这样是redis最简单的使用,但是万一节点宕机了,服务就无法使用了。

 

2、主从模式:为了解决单机模式的不足,同时开启多个redis节点,配置为一主多从模式,从节点从主节点同步数据(并不是实时的),同步主节点可以进行读写,从节点只能读取。当从节点宕机时并不影响redis集群,只需从启该节点;但是当主节点宕机时从节点并不会主动成为主节点,集群的读功能不受影响,但不能写入,可用性不高且手动修改从节点为主节点容易出错。

 

3、哨兵模式:哨兵模式是为了解决主从模式中主节点宕机导致写服务不可用产生的,其可以视为一个特殊的redis节点,当主节点宕机后自动在从节点中选出一个作为主节点,当前宕机的节点恢复时再向主节点同步数据,作为从节点运行。同时哨兵作为一个进程也有可能挂掉,将哨兵做集群可提高可用性(哨兵模式+主从模式实现了redis的高可用)

 

4、cluster(集群)模式:哨兵+主从已经实现了高可用,但是单机容量有限,主从备份组合,实际上所有的数据都是存储在一台服务器(当然,从节点可以部署在不同服务器),当数据越来越多,就需要将多套主从模式集群起来通过一定的算法将数据放到不同的redis主从组合中;至此redis实现了高可用性与拓展性。

 

以上是粗浅的理解,技术细节还需补足。