redis主从以及数据结构
2021-11-03 15:16:00 0 举报
redis主从结构
作者其他创作
大纲/内容
master向slave节点发送数据都是以rdb快照二进制的形式发送,这样比较快
从节点宕机情况下 主从复制
typedef struct dictEnty{}
redisObject
2、master 最近的数据缓存(1mb)。写命令
5、若offset在master的数据缓存范围中,则将数据缓存中offset以后的数据传输给slave;否则将数据缓存中全量传给slave
repl buffer
3、发送rdb快照
1、从节点断开连接
6、将buffer数据写到内存
单个k-v结构
一个redisDB
1、psync命令同步数据,发送命令之前会和master建立socket长连接
typedef struct redisDb{dict}
2.1、收到psync命令开始执行bgsave生成全量rdb快照信息
slave
5、发送 buffer数据
6、master通过socker连接持续将后续的命令传输给slave
value数据结构
正常情况下 主从复制
repl backlogbuffer
master
redis数据结构
2.2、master开始生成rdb快照之后,新数据的缓存,一些写命令
rdb数据
typedef struct dict{dictht ht[2]--两个hash表,只有再rehash时ht[0]和ht[1]有效,其余时间只有ht[0]有效}
4、清空老数据,并加载主节点rdb数据
3、重新通过socket与master建立连接
7、master通过socket长连接,持续将写命令发送给从节点,保证主从数据一致性
4、psync(offset)将上次连接的最后一条数据偏移量发送给master
0 条评论
下一页