目 录CONTENT

文章目录

Redis复制

FatFish1
2025-06-13 / 0 评论 / 0 点赞 / 2 阅读 / 0 字 / 正在检测是否收录...

复制是分布式redis系统中,将数据复制多个副本到其他机器,用于满足故障恢复和负载均衡需求

配置

参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认 情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以 同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。

在一台机器上有三种方法将其挂载为某个主节点的从节点:

  • 在配置文件中加入slaveof{masterHost}{masterPort},启动后生效

  • 在redis-server启动命令后加入--slaveof{masterHost}{masterPort}

  • 直接使用命令:slaveof{masterHost}{masterPort}

而想断开,则在从节点执行slaveof no one 即可,断开后的节点不会抛弃原有数据

而想切换其主节点,则在从节点执行slaveof{newMasterHost}{newMasterPort}切换主节点会删除当前所有数据

默认情况下,从节点使用slave-read-only=yes配置为只读模式,即读写分离的实现

Redis复制的拓扑结构

支持单层、多层复制

支持一主一从、一主多从、树状主从(即多层复制)

Redis数据同步策略

包括全量复制和部分复制

  • 全量复制:适用于初次复制场景,会将主节点数据一次性全部发给从节点,数据量大时,开销也很大

  • 部分复制:用于处理在主从复制中因网络闪断等原因造成的数据丢失 场景,当从节点再次连上主节点后,如果条件允许,主节点会补发丢失数据给从节点。

心跳机制

主从节点建立连接后,会互相维持长连接,并发送心跳命令

master向slave发送ping命令确认连通性,slave向master发送replconf ack {offset}命令确认复制到哪里了

0

评论区