redis复制缓冲区与复制积压缓冲区的区别

本文探讨了Redis中的复制缓冲区,包括client-output-buffer-limitslave用于全量复制的缓冲区管理和repl-backlog-size用于部分复制的积压缓冲区。当数据量大或网络延迟导致复制问题时,理解并调整这些配置至关重要。
摘要由CSDN通过智能技术生成

1、复制缓冲区(client-output-buffer-limit slave)

全量复制时使用到的一个缓冲区,每个从节点都会有一个该缓冲区,其主要存放全量复制过程中主节点开始执行bgsave到从节点载入rdb文件这个时间段中主节点的写命令。但是当主节点数据量太大或者网络延迟太大导致上面的时间段太长,即要写入的数据超过缓冲区的大小,导致主节点断开与从节点的连接。可能还会引起全量复制->复制缓冲区溢出导致连接中断->重连->全量复制->复制缓冲区溢出导致连接中断的循环。

复制缓冲区的大小由client-output-buffer-limit slave {hard limit} {soft limit} {soft seconds}配置,默认值为client-output-buffer-limit slave 256MB 64MB 60,其含义是:如果buffer大于256MB,或者连续60s大于64MB,则主节点会断开与该从节点的连接。

2、复制积压缓冲区(repl-backlog-size)

主节点维护的一个缓冲区,在主节点开始有从节点时创建(不管几个从节点都只有一个),其是长度固定且为先进先出的队列,默认大小为1MB。主要用来备份主节点最近发送给从节点的写命令,同时还会存储该写命令对应的偏移量(offset),当主从节点offset的差距过大超过缓冲区长度时,将无法执行部分复制,只能执行全量复制。由于该缓冲区长度有限,因此备份的命令也有限,又因为其为先进先出的队列,所以先进入缓冲区的命令会随着命令的增加被挤出缓冲区。因为部分复制效率高,所以为了能够提高部分复制的几率,可以适当增加积压缓冲区的大小,即设置配置 repl-backlog-size 的大小。

3、总结

复制缓冲区是客户端输出缓冲区的一种,主节点会为每一个从节点都创建一个复制缓冲区,主要用于全量复制使用。复制缓冲区,主要用于首次rdb后的首次增量同步数据,复制积压缓冲区主要用于常规的增量数据同步。当无法完成增量同步时,就会全量同步,全量同步后的第一次增量,仍是使用复制缓冲区。

复制积压缓冲区则是一个主节点只有一个,与从节点数量无关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值