redis实现数据同步的方法-创新互联

本篇文章为大家展示了redis实现数据同步的方法,代码简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联业务包括:成品网站、企业产品展示型网站建设、高端网站设计、电子商务型网站建设、成都外贸网站制作(多语言)、电子商务商城网站建设、按需规划网站、营销型网站等。效率优先,品质保证,用心服务是我们的核心价值观,我们将继续以良好的信誉为基础,秉承稳固与发展、求实与创新的精神,为客户提供更全面、更优质的互联网服务!

Redis的主从同步机制可以确保redis的master和slave之间的数据同步。

同步方式包括:全量复制和增量复制

全量拷贝

redis实现数据同步的方法

slave第一次启动时,连接Master,发送PSYNC命令,格式为psync {runId} {offset}

{runId} 为master的运行id;{offset}为slave自己的复制偏移量。
slave第一次连接master时,slave并不知道master的runId,也不知道自己偏移量,这时候slave会传一个问号和-1,告诉master节点是第一次同步。格式为psync ? -1

当master接收到psync ? -1时,知道slave是要全量复制,就会将自己的runId和offset告知slave,回复命令fullresync {runId} {offset}。同时,master会执行bgsave命令来生成rdb文件,期间的所有写命令将被写入缓冲区。

slave接受到master的回复命令后,会保存master的runId和offset,slave此时处于同步状态。
slave处于同步状态,如果此时收到请求,当配置参数slave-server-stale-data yes时,会响应当前请求;slave-server-stale-data no,返回错误。

master bgsave执行完毕,向slave发送rdb文件。rdb文件发送完毕后,开始向slave发送缓冲区中的写命令。

slave收到rdb文件,丢弃所有旧数据,开始载入rdb文件。

rdb文件同步结束之后,slave执行从master缓冲区发送过来的所以写命令。

此后 master 每执行一个写命令,就向slave发送相同的写命令。

增量拷贝

如果出现网络闪断或者命令丢失等异常情况时,当主从连接恢复后,由于从节点之前保存了自身已复制的偏移量和主节点的运行ID。因此会把它们当作psync参数发送给主节点,要求进行部分复制操作,格式为psync {runId} {offset}。

主节点接到psync命令后首先核对参数runId是否与自身一致,如果一致,说明之前复制的是当前主节点;之后根据参数offset在自身复制积压缓冲区查找,如果偏移量之后的数据存在缓冲区中,则对从节点发送+continue响应,表示可以进行部分复制;否则进行全量复制。

主节点根据偏移量把复制积压缓冲区里的数据发送给从节点,保证主从复制进入正常状态。

上述内容就是redis实现数据同步的方法,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:redis实现数据同步的方法-创新互联
文章链接:http://myzitong.com/article/dghdpd.html