主从复制
相当于所有的写请求,都交给master,再同步到各个slave节点,确保数据一致。
主节点挂了就麻烦了,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
哨兵
这个时候哨兵就出现了,为了解决单个主节点挂掉的问题,就搞多个主节点,相互之间哨兵机制监视起来。哨兵的作用就是监控Redis系统的运行状况,功能如下:
1、监控主服务器和从服务器是否正常运行。
2、主服务器出现故障时自动将从服务器转换为主服务器。
这里所谓的多个主节点,只是概念意义上的。每个时刻服务的时候,还只是一个。如果这个主节点挂了,就由新的从节点顶上。
切换机制是怎样的吗?
哨兵选举. 是的,用“改朝换代”来理解就好了,原先的Master下线了,大家就来争抢新的朝代,都各自发出自己的朝代号,等大多数同意之后,就开启新纪元了.
哨兵的方式,就解决了前面主从的大部分缺点,却也有一些不足。比如?
刚刚哨兵,依旧是主从的一种拓展。就存在内存浪费的问题,每个节点都保留了完整的内存数据。
那有其它的集群方式吗?
Redis-Cluster集群
所谓Redis-Cluster集群,采用的是无中心结构。以往主从节点,写入数据都由主节点负责。改用Cluster之后,就不存在说主节点从节点了,任一个节点都可以写数据。
这里,就要确保在写某个值的时候,每次读写这个值,都从固定的某个节点上做操作。 简单理解,就是通过哈希和插槽了,要存取的key,先做个hash,依据hash的结果就可以对应到某个特定的节点了。