redis是如何实现主从同步机制的?

访客 361 0
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。

按照同步的内容可以分为全量同步和部分同步;

按照同步的时机可以分为初始化同步和实时数据同步;

初始化同步:

初始化同步一般是加挂子节点,做全量同步。

1、slave启动的时候会向master发送同步指令SYNC,master接收到并调用SYNC的syncCommand函数做同步处理。

2、syncCommand函数会启动rdbSaveBackground备份进程(如有该进程存在不需创建启动)做备份操作,备份进程启动rdbSave函数保存备份文件rdb。

3、master节点监控备份程序执行完毕后,会向slave发送rdb文件。

实时数据同步:

在一般redis主从模式中,主节点作为写节点,从节点为读节点。主节点在接受到用户写操作后会通过,通过内部函数向slave节点通知进行数据变更,该数据同步为部分数据同步。

需要说明的是主从复制不会阻塞 master,在同步数据时,master 可以继续处理 client 请求。同时在主从模式下只有一个主节点,可以有多个slave节点。健康检查发现主节点不可用的时候会选择从slave节点中选择一个升级为master,一般情况下,这种主从通过哨兵模式实现。

标签: redis

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~