当前位置: 首页 > news >正文

Redis学习笔记:主从集群搭建实战,从零掌握读写分离与数据同步


📝本文首发于 栏轩·阁

欢迎访问阅读原文,获取更好的阅读体验。


什么是主从复制?

主从复制(Master-Slave Replication)是 Redis 高可用的基石。一个主库(Master)负责写入,多个从库(Replica)实时同步主库数据并提供读服务。

主要作用:

  • 读写分离:主库写,从库读,分摊读压力
  • 数据热备份:从库拥有主库的完整副本,主库宕机时数据不丢
  • 高可用基础:配合哨兵(Sentinel)可实现自动故障转移

环境准备

  • 操作系统:WSL2(Windows Subsystem for Linux)
  • 容器环境:Docker + Docker Compose

目录结构与配置文件

准备挂载的数据卷

mkdir-predis-master-slave/{config,data/master,data/replica1,data/replica2}cdredis-master-slave

主库配置(config/master.conf)

# 允许所有IP连接(Docker容器间通信必须)bind0.0.0.0# 监听端口port6379# 开启AOF持久化(便于观察数据落地)appendonlyyes# 规定日志级别,方便查错loglevel notice# 设定密码(为了安全,但主从都必须配一致;这里先留空方便入门)# requirepass 123456# 数据库数量保持默认databases16

从库1配置(config/replica1.conf)

bind0.0.0.0 port6380appendonlyyesloglevel notice# ****** 核心主从指令 ******# 声明我跟随谁(注意:这里填的是Docker Compose里的服务名 "master",而不是IP!)replicaof master6379# 如果主库有密码,需开启下面这行(目前没设密码,注释掉)# masterauth 123456

从库2配置(config/replica2.conf)

bind0.0.0.0 port6381appendonlyyesloglevel notice# 同样跟随主库replicaof master6379

Docker Compose编排

使用 Docker Compose 将三个 Redis 实例编排在同一个自定义网络中,通过服务名互相通信。

version:'3.8'services:# ---------- 主节点 ----------master:image:redis:7.2.4container_name:redis-masterrestart:alwaysports:-"6379:6379"volumes:-./config/master.conf:/usr/local/etc/redis/redis.conf-./data/master:/datacommand:redis-server /usr/local/etc/redis/redis.confnetworks:-redis-net# ---------- 从节点 1 ----------replica1:image:redis:7.2.4container_name:redis-replica-1restart:alwaysports:-"6380:6380"volumes:-./config/replica1.conf:/usr/local/etc/redis/redis.conf-./data/replica1:/datacommand:redis-server /usr/local/etc/redis/redis.confdepends_on:-masternetworks:-redis-net# ---------- 从节点 2 ----------replica2:image:redis:7.2.4container_name:redis-replica-2restart:alwaysports:-"6381:6381"volumes:-./config/replica2.conf:/usr/local/etc/redis/redis.conf-./data/replica2:/datacommand:redis-server /usr/local/etc/redis/redis.confdepends_on:-masternetworks:-redis-netnetworks:redis-net:driver:bridge

启动集群

docker-composeup-d

验证主从状态

查看主库状态

进入 master 容器并执行INFO replication

redis-cli-p6379INFO replication

输出如下即表示两个从库已成功连接:

# Replication role:master connected_slaves:2 slave0:ip=172.23.0.3,port=6381,state=online,offset=252,lag=1 slave1:ip=172.23.0.4,port=6380,state=online,offset=252,lag=1 master_failover_state:no-failover master_replid:7be3860eae78aa0c884546e40d444ba5708ca4c5 master_repl_offset:252 ...

观察偏移量变化

master_repl_offset是主库当前的复制偏移量,表示已复制数据流的字节数。当主库写入数据时,该值会增长。

在主库写入数据:

setname"DockerMaster"INFO replication

可以看到master_repl_offset从 252 增长到 499,从库同步该数据后也维持相同的偏移量。

验证从库数据

分别进入从库查看 name 字段,会发现数据已自动同步完成。

断线重连机制

操作场景:暂停一个从库容器 → 在主库写入新数据 → 重新启动该从库

重启后从库会增量同步而不是全量同步。这是因为 Redis 的主从复制采用带有部分重同步(PSYNC)的复制协议

  • 主库维护一个replication backlog(环形缓冲区,默认 1MB)
  • 从库断线后重连时,将自己的replid和偏移量发给主库
  • 主库检查该偏移量是否仍在 backlog 中:
    • 在 backlog 内→ 部分重同步,只发送断线期间缺失的数据
    • 超出 backlog→ 全量重同步,重新发送 RDB 快照

这就是高可用的一大保障:短暂的网络抖动不会触发昂贵的全量重同步。

读写分离验证

主库负责写入,从库只读。在从库执行写入命令会被拒绝:

>settest"test"READONLY You can'twriteagainst areadonly replica.

这一特性确保了集群数据的一致性流向:所有写入必须经过主库,从库只负责复制和应用。

总结

本文从零搭建了一套 Redis 一主两从集群,涵盖了:

知识点说明
主从配置replicaof指令指定主库
Docker Compose 编排自定义网络、服务名通信、数据卷挂载
复制原理INFO replication中的关键指标解读
偏移量master_repl_offset标记复制进度
断线重连PSYNC 协议支持增量同步(部分重同步)
读写分离从库只读保障数据一致性

以上是 Redis 主从复制的完整动手实践。理解这部分后,可以继续学习**哨兵模式(Sentinel)实现自动故障转移,或集群模式(Cluster)**实现数据分片与高可用。

http://www.jsqmd.com/news/1355471/

相关文章:

  • AIMNet2-wb97m-d3核心优势解析:14种元素覆盖、4个集成模型与DFT级精度的完美平衡
  • 告别风扇噪音!Dell G15笔记本散热控制终极指南
  • Kali Linux 2021.3 安装与配置全指南:打造稳定高效的安全测试环境
  • 深度势能模型测试指南:从精度验证到分子动力学模拟
  • 2026年郑州找全案设计施工落地一体化事务所 这家值得看 - 奔跑123
  • UE5 C++开发避坑指南:从内存管理到性能优化的核心陷阱与解决方案
  • 硬件测试内容之七:DC-DC
  • 安庆市怀宁县GEO服务商代理加盟选型靠谱本地推荐:本地合伙人如何判断源头厂商、区域保护与长期分润? - 小随科技
  • SGLang性能调优实战指南:4个工具帮你快速定位瓶颈
  • 计算机组成原理实验 MIPS RAM设计
  • JavaScript中的CRUD操作指南示例 - 用DHTMLX创建医院管理系统!
  • Surface Distance:医疗影像分割评估的终极解决方案
  • AI浪潮下教育行业营销转型:核心需求与解决方案关键逻辑 - 商业大观
  • Browser-Use:让AI成为你的智能浏览器管家
  • TimesFM-20M_2023_Augmented快速上手:3步完成你的第一个时间序列预测
  • 2026年8月上海恋爱期间买房纠纷律师事务所怎么选?6家专攻非婚购房产权争议的律所梳理 - 品牌深度评测
  • 电容原理深度解析:从动态模型到工程应用
  • Cherry Studio健康检查:确保AI模型稳定运行的关键指南
  • 2026年郑州靠谱的别墅复式楼大平层私宅设计事务所推荐 - 奔跑123
  • Jaeger分布式追踪:3步掌握微服务性能监控的终极指南
  • 铜陵市枞阳县GEO服务商代理加盟选型:靠谱本地推荐,城市合伙人到底怎么选? - 子柔传媒
  • 如何快速掌握JSON可视化处理工具:面向初学者的终极完整指南
  • 为什么众多身高管理品牌,总喜欢拿智仕高做对比?
  • 界面控件DevExtreme UI组件——增强的API功能
  • 如何用Stable Video Infinity轻松生成无限长度视频:完整应用指南
  • 深度解析:DeepSeek-R1-Distill-Qwen-14B昇腾部署全攻略与性能优化秘籍
  • 三阶段打造专属家庭媒体中心:Emby Server完全指南
  • AI工具调用:从协议到实践,让大模型学会“动手”
  • 2026年8月上海恋爱期间买车纠纷律所哪家更对口?3家处理恋爱购车出资争议的律所解析 - 品牌深度评测
  • 黄山市休宁县GEO服务商代理加盟选型:靠谱的本地推荐怎么判断?城市合伙人入局全攻略 - 小随科技