【数据库】redis怎样完成数据同步
2019-11-21数据库搜奇网65°c
A+ A-
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怎样完成数据同步的细致内容,更多请关注ki4网别的相干文章!