Skip to content

Replication

一、"replication"即我们平时所说的主备中的"备",有备无患;

二、Redis的HA的实现依赖于replication

三、Redis的两种部署方式,都支持replication

Replication在cluster mode disabled和cluster mode enabled的情况下对比分析

实现分析

server.h:struct redisServer中有成员变量list *slaves,显然对于master而言,这个成员变量是用于保存它的所有的slaves的;

cluster.h:struct clusterNode中有成员变量struct clusterNode **slaves,显然这是用于保存这个node的所有的slaves的;

看到了这些,我想到的一个问题是:难道两种模式下,replication的实现是不同的?

需要注意的是,两者的类型是不一样的,server.h:struct redisServer的成员变量list *slaves中保存的元素的类型是struct client,而cluster.h:struct clusterNode的成员变量struct clusterNode **slaves中保存的元素的类型是struct clusterNode

其实分析到这里,我猜测:cluster模型下的replication应该是基于普通的replication实现的,在cluster的实现中,应该会对普通的replication进行一定地封装,cluster的实现中,应该主要侧重于对cluster中node之间的关系的维护等;

构建分析

cluster中,指定某个节点为另外一个节点的replication:

CLUSTER REPLICATE node-id

非cluster中,指定一个instance为另外一个instance的replication:

SLAVEOF host port