美文网首页
redis-复制

redis-复制

作者: x1wan | 来源:发表于2016-11-30 17:04 被阅读18次

    reids在2.8版本增加了部分复制功能,在一些场景中代替了全量复制,提高了复制的效率。

    1、全量复制

    1)slave向master发送SYNC命令,master执行BGSAVE命令生成RDB文件。

    2)master将生成的RDB文件发送给slave。

    3)slave载入RDB文件到内存。

    4)master将执行SYNC命令之后收到写命令记录到缓存中,并将这些命令发送给slave。

    可以看出,全量复制会消耗大量的CPU,内存,磁盘IO,网络资源,因而应该尽量减少使用全量复制。

    2、部分复制

    部分复制主要在内存中缓存了一些最近的复制命令,当出现网络问题时,slave重新连接上master的时候,master会根据slave发送的复制偏移量来决定是进行部分复制还是全量复制。

    1)复制偏移量

    master向slave传播命令的时候会更新自己的偏移量,slave在收到命令后也会更新自己的偏移量。

    2)复制缓冲区

    master会维护一个固定长度的FIFO队列,默认大小是1M,当master进行命令传播后会将这个命令加入到复制缓冲区中。

    3)服务器运行ID

    每个redis服务启动时会自动生成一个40位的ID,slave断线重新连接上master开始复制时会发送这个ID,master根据这个ID判断是否是自己,如果不是自己则也需要进行全量复制。

    相关文章

      网友评论

          本文标题:redis-复制

          本文链接:https://www.haomeiwen.com/subject/ypstmttx.html