Redis的集群方案

17

主要分为以下几种:

  • 主从复制

  • 哨兵模式

  • 分片集群

主从复制

单节点Redis的并发能力是有上限的,通过搭建主从集群,可以提高并发能力,实现读写分离(读多写少,主节点写,从节点读)

主从数据同步流程

主从全量同步

  1. 从节点执行replicaof命令,建立连接

  2. 从节点向主节点发送数据同步请求,里面包含了从节点的replication id和offset

  3. 主节点判断该从节点是不是第一次同步(就是看主从节点的replication id是否一致):

    ①如果是第一次同步,给从节点发送主节点版本信息(replication id和offset),从节点保存版本信息,同时主节点执行bgsave,生成RDB,发送给从节点。

    • 从节点清空本地数据,执行RDB文件。

    • 主节点记录RDB期间的所有新请求到一个repl_baklog文件中,再将repl_baklog文件的命令发送给从节点,从节点执行收到的命令,这样就保持了数据的一致。

增量同步

②如果不是第一次同步,主节点判断从节点发送过来的replication id和自己的replication id是一致的,主节点就不会去bgsave生成 RDB文件了,而是通过repl_baklog文件去同步数据,将主节点从节点offset差距的那部分数据传给从节点

Replication Id:是数据集的标记,id一致则说明是同一数据集,每一个主节点都有唯一的replication id,从节点会继承主节点的replication id。

offset:偏移量,随着记录在repl_baklog中的数据增多而增大,从节点完成同步时也会记录当前的offset,如果从节点的的offset小于主节点的offset,就说明从节点数据落后于主节点,需要更新。

主从节点之间存在心跳检测机制,这样就知道主节点最新偏移量offset是多少,从节点就能向主节点更新数据了。