-
主从架构的核心原理
当启动一个slave node的时候, 他会发送一个PSYNC命令给master node, 如果这时重新连接master node, 那么master node仅仅会复制给slave部分缺少的数据; 否则如果是salve node, 那么会触发一次full resynchronization开始进行全量的复制, 此时的master会在后台启动一个进程, 生成一份rdb文件, 同时还会降从客户端收到的命令缓存在内存中, rdb文件生成完毕之后, master会将这个rdb发送给slave, slave会先写入本地磁盘, 然后再从本地磁盘加载到内存, 然后master会将内存中缓存的写命令发送给slave, slave也会同步这些数据.
-
主从复制的断点续传
从redis 2.8开始, 就支持主从复制的断点续传, 如果主从复制过程中, 网络连接断掉了, 那么可以接着场次复制的地方, 继续复制下去, 而不是从头开始复制一份master node会在内存中创建一个backlog, master和slave都会保存一个replica offset还有一个master id, offset就是保存在, offset就是保存在backlog中的, 如果master和lave网络连接断掉了, slave会让master从上次的replica offset开始继续复制但是如果没有找到对应的offset, 那么就会执行一次resynchronization.
-
无磁盘化复制
master在内存中直接创建rdb, 然后发送给slave, 不会在自己本地的磁盘中存储 repi-diskless-sync repi-diskless-sync-delay 等待一定市场再开始复制, 因为要等更多slave重新连接过来
-
过期key处理
slave不会过期key, 只会等待master过期key, 如果master过期了一个key, 或者通过LRU淘汰了一个key, 那么会模拟一条del命令发送给slave
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。