• redis 复制


    配置:

      配置项:slaveof <masterip> <masterport>

      信息查询:INFO REPLICATION

    完全重新同步:

      当从实例第一次连接到主实例时,总是需要进行完全重新同步。在进行完全重新同步时,为了将所有数据复制到从实例中,主实例将数据转储到一个RDB文件(保存到磁盘,占用内存),然后发送给从实例;从实例接受到RDB文件后,会先将内存中的数据清空,然后将RDB文件中的数据导入。主实例上的复制过程时完全异步的,因此不会阻碍请求的处理。

    部分重新同步:

      当主实例与从实例断开连接后,主实例会将期间所做的操作记录到命令积压缓冲区replication backlog中;当从实例重连后使用PSYNC命令来发送最后一个的master_replid和最后一个master_repl_offset;主实例首先会检查请求中的master_replid是否与自己的一致,然后再检查请求中的offset能否从replication backlog中获取,如果master_repl_offset在缓冲区范围内,主实例将从master_repl_offset开始到队列结束的数据传给slave,从而达到同步,降低了使用全量复制的开销。否则,如果主实例在连接断开期间,写入的命令数量超出了缓冲区的容量,那么部分重新同步就会被拒绝,完全重新同步将会开启。

     backlog缓冲区的大小默认事1M,可以利用以下公式估算缓冲区合适大小:

      t*(master_repl_offset2-master_repl_offset1)/(t2-t1)

      t是断开连接的时间。公式是先用两个时间节点的偏移量除以时间差算出平均流量,然后乘以断开时间。

  • 相关阅读:
    Scrapy中的反反爬、logging设置、Request参数及POST请求
    scrapy的CrawlSpider类
    利用scrapy爬取腾讯的招聘信息
    scrapy知识补充--scrapy shell 及Spider
    scrapy的一个简单小项目
    scrapy框架介绍及安装
    并发编程--greenlet与gevent
    并发编程--协程
    并发编程--进程池与线程池-练习3
    并发编程--进程池与线程池-练习2
  • 原文地址:https://www.cnblogs.com/houyongchong/p/10375674.html
Copyright © 2020-2023  润新知