Redis集群消息

举报
周杰伦本人 发表于 2022/06/26 14:28:37 2022/06/26
【摘要】 Redis集群消息 1. PING消息 2. MEET消息 3. PONG消息 4.发布消息 5.故障消息 总结 ❤️ 感谢大家 Redis集群消息redis群集的消息有五种。 1. PING消息此消息用于检测节点是否在线。 群集中的每个节点从列表中随机选择五个节点并发送PING消息 2. MEET消息MEET消息是客户端发送CLUSTER MEET ip port命令,接收该命令的...

Redis集群消息

redis群集的消息有五种。

1. PING消息

此消息用于检测节点是否在线。 群集中的每个节点从列表中随机选择五个节点并发送PING消息

2. MEET消息

MEET消息是客户端发送CLUSTER MEET ip port命令,接收该命令的节点向命令中的ip主机和port主机发送MEET消息,以使该主机加入群集

3. PONG消息

PONG消息是指在收到MEET或PING消息后,向发件人发送PONG消息以确认收到了发件人的消息。 当一个节点从从节点成为主节点时,该节点可以通过PONG消息更新其它节点对节点的感知。

这是cluster.h上的clusterMsgData,这是消息的主体

union clusterMsgData {
    /* PING, MEET and PONG */
    struct {
        /* Array of N clusterMsgDataGossip structures */
        clusterMsgDataGossip gossip[1];
    } ping;

    /* FAIL */
    struct {
        clusterMsgDataFail about;
    } fail;

    /* PUBLISH */
    struct {
        clusterMsgDataPublish msg;
    } publish;

    /* UPDATE */
    struct {
        clusterMsgDataUpdate nodecfg;
    } update;
};

从结构体可以看到这三个消息是由clusterMsgDataGossip构成的

4.发布消息

当节点接收到PUBLISH命令时,节点在运行该命令的同时向集群广播PUBLISH消息,从而使其他节点也运行该命令。

clusterMsgDataPublish的结构体

typedef struct {
    // 频道名长度
    uint32_t channel_len;
    // 消息长度
    uint32_t message_len;
    /* We can't reclare bulk_data as bulk_data[] since this structure is
     * nested. The 8 bytes are removed from the count during the message
     * length computation. */
    // 消息内容
    unsigned char bulk_data[8];
} clusterMsgDataPublish;

5.故障消息

当一个主节点确定另一个主节点处于脱机状态时,故障消息会向群集广播故障消息,以通知另一个节点该节点已脱机。

clusterMsgDataFail结构体

typedef struct {
    // 故障节点的名字
    char nodename[CLUSTER_NAMELEN];
} clusterMsgDataFail;

总结

这就是redis常用的5个消息,我们总结一下就是PING消消息、PONG消息、MEET消息、发布消息和故障消息,PING消息是用来检测节点是否在线的,PONG消息是对收到PING消息或者MEET消息作出的反馈消息,表名消息已经接收到,MEET消息是用来让主机加入到集群中,发布消息是用来广播,故障消息是是在节点处于脱机状态的时候进行发布,表示该主机已发生故障。

好了这就是今天的内容了,喜欢的朋友们欢迎给我点赞,嘿嘿

❤️ 感谢大家

如果你觉得这篇内容对你挺有有帮助的话:

  1. 欢迎关注我❤️,点赞👍🏻,评论🤤,转发🙏
  2. 关注盼盼小课堂,定期为你推送好文,还有群聊不定期抽奖活动,可以畅所欲言,与大神们一起交流,一起学习。
  3. 有不当之处欢迎批评指正。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。