如何分析redis 复制

发布时间:2022-01-04 10:19:50 作者:柒染
来源:亿速云 阅读:106

如何分析redis  复制,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

相对比使用RDS ,NOSQL 数据库的虽使用,但被忽视的不少,相对于数据库之间的复制,(物理复制, 逻辑复制),redis 的复制,不少人认为还是比较简单的。那下面有一些问题

1 redis 复制对对于内存有什么要求

2 redis 复制到底是推数据还是拉数据

3 如果两台 redis 拥有同样的replicationID 和 offset 是否能他们的数据一致。

4 redis 可以拥有两个复制ID吗?

首先有几个facts 需要别列出来

1 复制是异步的

2 复制不会阻止master 服务器的上的工作

3 master 上可以连接多个slaves

4 复制是可控的

5 Slave 都是只读的

6 副本可以是master ,也就是具有级联的概念

复制的配置很简单,只要在从库配置了 replicaof 信息,以及master 认证,初步的复制就会工作了。

在Master 和 replica 之间建立复制的关系后,,由master发送指令给replica,并且将所发生的操作,键值过期以及处理,等信息发送给replica。

当master和replica主键由于某些原因断开后,进行重新连接后进行重新的同步,将replica中没有的数据,从主同步到replica,当这样的复制方式不能进行正常的同步,则要在主中先进行snapshot  当前所有的数据发送给replica然后在将后续复制过程中,master操作的数据在复制并重放到replica.

如何分析redis  复制

问题1 

redis 在复制中内存比单机的redis要考虑的更多,通常redis 被分配的内存的60% 用于主要的工作,而剩下的是需要为bgsave 和后期的数据同步服务的。

最后一句话的意思是,reids 的复制其实的数据是要灌入到内存中,而不是和传统数据库要进行落盘的操作,在进行数据的硬化。所以redis的数据复制是依赖于内存的,并且内存预留的越大,则复制的速度也越快,所以预留足够的内存给REDIS 对加速复制是有好处的。

如何分析redis  复制

问题2 redis 的数据应该是属于推的方式

这个问题其实我也查过一些资料,但特别清晰的定义数据是 pull 还是push 的并没有。但下面的一段官方的文字或许可以回答这个问题。当 replica  连接到主后, 会发送psync命令到主,其中包含如果之前已经有主,并且有复制的话,则发送他目前拥有的主以及复制的offset 偏移量,然后主就会根据这个信息,将他目前的偏移量进行比对,如果可以进行数据的发送则开始发送数据。 如果副本引用的历史记录(复制ID)不再已知,则会发生完全重新同步:在这种情况下,副本将从头获得数据集的完整副本。

所以根据这段文字我认为redis复制的方式是 从主推送数据。

问题 3  

复制ID基本上标记了给定的数据集历史。每当一个实例作为主实例从头开始,或者一个副本被提升为主副本时,都会为这个实例生成一个新的复制ID。连接到主服务器的副本将在握手后继承其复制ID。因此,具有相同ID的两个实例之间存在关联,因为它们拥有相同的数据,但可能在不同的时间。对于保存最新数据集的给定历史记录(复制ID),偏移量作为需要理解的逻辑时间。所以具有相同的复制ID 以及 OFFSET 偏移量的两个REDIS 数据是同步的。

问题 4  

Redis实例有两个复制id的原因是将副本提升到主副本。故障转移之后,提升的副本仍然需要记住它以前的复制ID,因为这样的复制ID是以前的主副本ID。这样,当其他副本将与新主副本同步时,它们将尝试使用旧主副本ID执行部分重新同步。这将像预期的那样工作,因为当副本被提升为主ID时,它将把它的辅助ID设置为主ID,记住这个ID切换发生时的偏移量。稍后,它将选择一个新的随机复制ID,因为一个新的历史记录开始了。在处理连接的新副本时,主副本将使用当前ID和辅助ID匹配它们的ID和偏移量(为安全起见,最大偏移量为给定偏移量)。简而言之,这意味着在故障转移之后,连接到新提升的主服务器的副本不必执行完全同步。所以一个REDIS 在进行故障转移后,并且还要挂载其他的新的replica的情况下,是拥有两个replica ID的。

关于如何分析redis  复制问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. redis初探之主从与哨兵部署
  2. redis阻塞分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

redis

上一篇:怎么用Spring @Autowired实现自动装配

下一篇:JS的script标签属性有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》