redis主从复制原理, 断点续传, 无磁盘化复制, 过时key的处理

  1. 主从架构的核心原理node

    当启动一个slave node的时候, 他会发送一个PSYNC命令给master node, 若是这时从新链接master node, 那么master node仅仅会复制给slave部分缺乏的数据; 不然若是是salve node, 那么会触发一次full resynchronization开始进行全量的复制, 此时的master会在后台启动一个进程, 生成一份rdb文件, 同时还会降从客户端收到的命令缓存在内存中, rdb文件生成完毕以后, master会将这个rdb发送给slave, slave会先写入本地磁盘, 而后再从本地磁盘加载到内存, 而后master会将内存中缓存的写命令发送给slave, slave也会同步这些数据.
  2. 主从复制的断点续传redis

    从redis 2.8开始, 就支持主从复制的断点续传, 若是主从复制过程当中, 网络链接断掉了, 那么能够接着场次复制的地方, 继续复制下去, 而不是从头开始复制一份master node会在内存中建立一个backlog, master和slave都会保存一个replica offset还有一个master id, offset就是保存在, offset就是保存在backlog中的, 若是master和lave网络链接断掉了, slave会让master从上次的replica offset开始继续复制可是若是没有找到对应的offset, 那么就会执行一次resynchronization.
  3. 无磁盘化复制缓存

    master在内存中直接建立rdb, 而后发送给slave, 不会在本身本地的磁盘中存储
    repi-diskless-sync
    repi-diskless-sync-delay 等待必定市场再开始复制, 由于要等更多slave从新链接过来
  4. 过时key处理网络

    slave不会过时key, 只会等待master过时key, 若是master过时了一个key, 或者经过LRU淘汰了一个key, 那么会模拟一条del命令发送给slave
相关文章
相关标签/搜索