文章目录
- 单机模式
- 主从复制
- 哨兵模式
- 分片集群
在Redis中提供的集群方案总共有三种:单机模式,主从复制集群、哨兵模式,Redis分片集群
单机模式
Redis 只运行在一台服务器上,并且所有的数据都存储在这一台服务器的内存中。
主从复制
搭建主从复制集群解决的是高并发读问题。
单个Redis节点的并发能力有限,要进一步提高Redis的并发能力,可以搭建主从复制集群,实现读写分离。主节点负责写入数据,从节点负责读数据,主节点把数据同步到从节点中。
主从复制的流程:
我们先来了解两个概念:
全量同步:主节点会将当前数据库的完整状态发送给从节点,通常通过发送一个数据库快照(如 Redis 中的 RDB 文件)来实现。
增量同步:主节点只传输自上次同步以来的写操作记录给从节点,从节点根据这些记录来更新自身的数据状态。
1。从节点和主节点建立连接,并把replication id和offset偏移量发送给主节点
2。主节点接收replication id和offset偏移量,根据replication id不同发现是第一次同步,是第一次同步就会把自身replication id和offest发送给从节点让主从信息保持一致,与此同时,主节点会执行bgsave,生成rdb文件后发送给从节点,进行一次全量同步。
3。之后同步数据都是增量同步,从节点把自身offset偏移量发送给主节点,主节点对照自身的offest从命令日志中获取offset值之后的数据,发送给从节点进行数据同步。
从节点重启之后也会执行增量同步
哨兵模式
哨兵模式可以看作是主从复制模式的补充.
哨兵模式用于监控 Redis 主从复制集群中的节点,并在主节点失效时自动将其中一个从节点晋升为新的主节点,以确保系统的可用性。哨兵通过定期向节点发送 PING 命令来检测节点的状态。
哨兵模式解决的是redis的高可用性问题。(高可用性是指系统能够在长时间内正常运行而不中断的能力)
分片集群
分片集群通常配合内置的主从复制使用。
主从复制和哨兵模式无法解决的问题:
海量存储问题:虽然有一主多从,但存储的数据是一样的,无法解决海量存储问题。
高并发写问题:一主多从,主负责写入,无法解决高并发性写问题。
分片集群的作用:
分片集群主要解决的是,海量数据存储的问题,和高并发写问题,集群中有多个master,每个master保存不同数据,并且还可以给每个master设置多个slave节点,就可以继续增大集群的高并发能力。同时每个master之间通过ping监测彼此健康状态,就类似于哨兵模式了。当客户端请求可以访问集群任意节点,最终都会被转发到正确节点。
Redis分片集群中数据是怎么存储和读取的?
Redis 集群引入了哈希槽的概念,有 16384 个哈希槽,集群中每个主节点绑定了一定范围的哈希槽范围, key通过 CRC16 校验后对 16384 取模来决定放置哪个槽,通过槽找到对应的节点进行存储。