【Java 开发日记】我们来说一说 Redis 主从复制的原理及作用

下面是一篇适合 技术博客 / Java 开发日记风格 的内容,系统讲一下 Redis 主从复制的原理及作用


【Java 开发日记】我们来说一说 Redis 主从复制的原理及作用

在实际的后端系统中,如果只部署一个 Redis 实例,一旦 Redis 宕机,系统缓存就会全部失效。因此在生产环境中,我们通常会使用 主从复制(Master-Slave Replication) 来提升系统的稳定性与性能。

今天简单整理一下 Redis 主从复制的作用与底层原理

涉及的技术:Redis


一、什么是 Redis 主从复制

Redis 主从复制指的是:

一个 Master(主节点) 可以同步数据到多个 Slave(从节点)

结构如下:

        Master
       /  |   \
   Slave Slave Slave

特点:

  • Master 负责 写操作
  • Slave 负责 读操作
  • 数据由 Master 同步到 Slave

二、Redis 主从复制的作用

在企业级系统中,主从复制主要有 3 个核心作用。


1 读写分离(提高性能)

通常情况下:

写操作 → Master
读操作 → Slave

例如:

用户请求
   │
   ├── 写缓存 → Master
   └── 读缓存 → Slave

这样可以:

  • 减少 Master 压力
  • 提高系统并发能力

2 数据备份

Slave 节点保存 Master 的完整数据副本。

如果 Master 出现问题:

Slave 可以升级为 Master

这就是高可用架构的基础。


3 高可用架构基础

Redis 的高可用组件:

  • Redis Sentinel
  • Redis Cluster

这些组件都依赖 主从复制机制


三、Redis 主从复制原理

Redis 主从复制大致分为 两个阶段

1 初次同步(全量复制)
2 持续同步(增量复制)

四、第一次同步(全量复制)

当 Slave 第一次连接 Master 时,会触发 全量复制

流程如下:

Slave → Master:发送 sync/psync 请求
Master → Slave:执行数据同步

详细步骤:

1 Slave 发送同步请求

Slave 启动后执行:

PSYNC

请求同步数据。


2 Master 创建 RDB 快照

Master 执行:

BGSAVE

生成 RDB 文件。

RDB 是 Redis 的 数据快照文件


3 Master 发送 RDB 文件

流程:

Master
  │
  ├─生成 RDB
  │
  └─发送 RDB → Slave

Slave 接收后加载数据。


4 同步缓冲区命令

在生成 RDB 的过程中:

如果有新的写命令:

SET
DEL
INCR

Redis 会把这些命令存入:

replication buffer

RDB 发送完后,再发送这些命令。


最终:

Slave 数据和 Master 完全一致


五、增量复制(命令传播)

当第一次同步完成后,就进入 增量复制阶段

流程:

Master 执行写操作
       │
       ▼
写命令发送给 Slave
       │
       ▼
Slave 执行相同命令

例如:

SET user:1 "Tom"

Master 会把这条命令发送给所有 Slave。

这样就实现 实时同步


六、PSYNC 部分复制机制

在 Redis 2.8 以后,引入了 PSYNC 机制

解决问题:

Slave 短暂断线后不需要重新全量同步。

PSYNC 依赖两个核心机制:

Replication ID
Offset

Replication ID

每个 Master 有一个唯一 ID。

用于识别复制关系。


Offset

表示复制偏移量。

Master offset = 1000
Slave offset  = 998

Slave 只需要补充:

998 → 1000

即可完成同步。


七、复制积压缓冲区

Redis 使用一个缓冲区:

replication backlog buffer

作用:

保存最近的写命令。

如果 Slave 断线时间不长:

只需补发缺失命令

不需要全量复制。


八、主从复制配置

配置一个 Slave 非常简单。

例如:

slaveof 192.168.1.10 6379

含义:

当前 Redis 作为从节点
复制 192.168.1.10:6379

在 Redis 5 之后:

replicaof

例如:

replicaof 192.168.1.10 6379

九、Redis 主从复制特点

优点:

✔ 实现读写分离
✔ 提高系统性能
✔ 数据冗余备份
✔ 高可用基础

缺点:

❌ 主节点压力较大
❌ 存在复制延迟
❌ 主节点单点问题

因此通常还需要:

  • Redis Sentinel
  • Redis Cluster

来实现真正的高可用。


十、主从复制架构图

典型生产架构:

                Master
                  │
        ┌─────────┴─────────┐
        │                   │
      Slave1              Slave2
        │
     读请求

请求分布:

写请求 → Master
读请求 → Slave

十一、总结

Redis 主从复制的核心思想其实很简单:

Master 负责写
Slave 负责读
数据通过复制同步

同步过程分为:

1 全量复制(RDB)
2 增量复制(命令传播)
3 PSYNC 断点续传

这也是 Redis 构建 高性能 + 高可用缓存系统 的基础。


如果你愿意,我可以再帮你写一篇 下一篇开发日记(很多 Java 面试必问):

  • Redis 哨兵模式 Sentinel 原理
  • Redis Cluster 分片机制
  • Redis 缓存雪崩 / 穿透 / 击穿
  • Redis 持久化 RDB vs AOF
  • Redis 分布式锁实现

这些基本都是 Java 后端面试高频题

文章已创建 5021

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部