主从:
包括一个master节点 和多个slave节点:
master节点负责数据的读写,slave节点负责数据的读取,master节点收到数据变更,会同步到slave节点
去实现数据的同步。通过这样一个架构可以去实现redis的一个读写分离。提升数据的查询效率。但是redis主从集群不提供容错和恢复的功能,一旦master节点挂了,不会自动选取出新的master节点,导致后续的客户
端所有的写请求失败。所以redis提供了哨兵机制:专门用来监听redis主从集群提供故障的自动恢复能力,哨兵会监控redis主从节点的一个状态。当master节点出现的故障的时候,会自动从剩下的slaver中选举出一个新的master,哨兵模式下虽然解决了master选举的一个问题,但是在线扩容的问题还是没有解决。于是就有了第三种集群方式:redis Cluster:
它实现了redis的分布式存储,也就是每个节点存储不同的数据。实现数据的分片功能。在redis cluster里面引入了slot槽,来实现数据分片。slot的整体取值范围是0-16383,每个节点会分配一个slot区间,当我们存取key的时候。redis会根据key去计算,得到一个slot的值。然后找到对应的节点进行数据的读写。会自动选举。但是客户端实现比较复杂。slave只是一个冷备节点不提供分担读写压力。对redis的批量操作指令有限制。
高手回答:
redis主从:
1、基于主从复制来实现,所以它可以实现读写分离,分担redis读操作的一个压力
2、redis Cluster集群里面的slave节点只是实现冷备的一个机制,它只有在master宕机之后才会工作。
3、redis哨兵集群无法在线扩容。它的并发压力受限于单个服务器资源的一个配置,redis cluster提供了基于slot槽的一个数据分片的一个机制。它可以实现在线扩容。去提高读写性能。