redis主从和哨兵原理

redis主从原理

一、全量复制

主从全量复制:核心:将主节点最新的rdb文件和缓冲区的数据同步给从节点
1、从节点首次启动,进行全量同步。向主节点发送psync命令
2、主节点收到psync命令后,执行bgsave生成最新的rdb快照数据
3、主节点将rdb文件发送给从节点
4、在第2步中主节点生成rdb快照的时候(假如生成快照时间1s,期间有100条命令进入到主节点)那么发送给从节点的rdb文件不是最新的(没有那100条命令)
5、主节点有一个缓冲区,专门存放最近的命令(默认1M)。也就是说主节点不仅给从节点发送rdb快照,同时也将缓冲区的数据发送给从节点
6、将rdb和缓冲区的数据合并生成一个完整的rdb并替换从节前之前的快照文件

疑问:
1、redis没开启rdb怎么进行同步?
答案:跟持久化方式没有关系,同步是主节点接受到从节点的psync命令后,主动执行bgsave生成的rdb【主动生成主节点的全量数据rdb】
2、什么时间进行主从复制?从节点首次启动的时候

二、部分复制

1、从节点连接断开,重新连主节点
2、向主节点发送psync(offset)命令,offset代表从节点的rdb文件中最后一条命令的偏移量
3、如果从节点发送的offset在主节点的缓冲区中,那么master会将缓存中从slave的offset之后的数据一次性同步给从节点,否则会全量同步

三、主从切换

当master挂了,需要手动修改很多,修改slave的replicaof 新的主节点,然后重启。
还要改java程序的ip。需要运维进行master挂了自动切换master

redis哨兵原理

哨兵不提供读写服务,主要用来监控redis示例节点
1、客户端第一次访问哨兵,哨兵拿到master节点后告知客户端
2、客户端访问master节点,如果master节点挂了则会在多个slave节点中选择一个新的master节点,此时哨兵已监控到master节点的变化,然后告诉客户端新的master节点ip,客户端接收到新的master的ip,下次访问则会访问新的master的ip

上一篇:SVN回退到某版本的命令


下一篇:金蝶ERP实现产品入库及委外加工冲减生产现场虚仓毛坯数