redis集群

Posted yangyang12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于redis集群的主要内容,如果未能解决你的问题,请参考以下文章

java怎么从多台redis集群取数据库

我在工作中遇到的redis集群使用

redis集群概念

python连接redis,redis集群

Python3 redis集群连接 (带密码验证)

c#程序怎么调用redis集群