yangyang12138

导航

redis集群

1.复制

  第一次进行全量复制,即将主服务器的数据通过rdb保存起来,然后复制到从服务器中,以后通过sync命令不断复制主服务器执行的命令来完成数据的同步。

  复制命令,slaveof <master_ip> <master_port>

2.Sentinel

  哨兵模式,通过redis-sentinel命令将一个redis服务器启动为哨兵,

    启动过程 初始化服务器, 替换sentinel代码,初始化sentinel状态,根据配置文件初始化监视的服务器列表,创建向主服务器的连接,

  sentinel数据结构

    

复制代码
struct sentinelState{
    unint64_t current_epoch;
    dict *masters;
    int tilt;
    int running_scripts;
    mstime_t previous_time;
    list *scripts_queue;
}sentinel;

typedef struct sentinelRedisInstance{
  int flags;
  char *name;
  char *runid;
  unint64_t config_epoch;
  sentinelAddr *addr;
  mstime_t down_after_period;
  int quorum;
  int role;
}sentinelRedisInstance;
复制代码

sentinel启动完成后会连接其他sentinel,然后选出一个主sentinel,当主sentinel故障时会自动选出新的主机。

3.集群

  首先服务器要以集群的形式启动,然后执行cluster meet <ip> <port>,连接指定的主机,

  cluster nodes查看集群中的节点状态

  然后要分配slots

    节点A会为节点B创建一个clusterNode结构,并将该结构添加到自己的nodes字典中。

    发送cluster meet命令

    节点B在收到消息后也会创建一个clusterNode结构

    节点B向节点A返回pong命令。

  可以通过cluster keyslot <key>来查看槽的id

posted on 2020-06-28 23:27  杨杨09265  阅读(137)  评论(0编辑  收藏  举报