news 2026/6/15 18:24:27

Redis 主从搭建笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis 主从搭建笔记

Redis 主从搭建笔记

学习视频:

Redis入门到精通:

https://url90.ctfile.com/d/51188890-157896900-8b14ca?p=3489 (访问密码: 3489)

一、主从架构核心说明

Redis 主从复制(Master-Slave)是实现数据冗余、读写分离的基础架构:

  • 主库(Master):负责写操作,可同步数据到从库;

  • 从库(Slave/Replica):只读(默认),从主库同步数据,分担读压力;

  • 核心价值:数据备份、读写分离、故障恢复(需配合哨兵/集群实现自动切换)。

二、前置准备

1. 环境要求

  • 操作系统:Linux(CentOS 7/8、Ubuntu 20.04 等,本文以 CentOS 7 为例);

  • Redis 版本:建议 5.0+(本文用 6.2.18,5.0+ 配置项有调整,如slaveofreplicaof);

  • 节点规划(示例):

    角色

    IP

    端口

    Master

    [192.168.1.1](192.168.1.1)

    6379

    Slave1

    [192.168.1.2](192.168.1.2)

    6380

    Slave2

    [192.168.1.3](192.168.1.3)

    6381

2. 基础环境配置

# 关闭防火墙(生产建议仅开放Redis端口) systemctl stop firewalld && systemctl disable firewalld # 关闭SELinux setenforce 0 && sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 安装依赖(编译Redis需要) yum install -y gcc-c++ make

3. Redis 安装(所有节点)

# 下载并解压Redis cd /usr/local/src wget https://download.redis.io/releases/redis-6.2.18.tar.gz tar -zxvf redis-6.2.18.tar.gz cd redis-6.2.18 # 编译安装(PREFIX指定安装目录) make && make PREFIX=/usr/local/redis install # 创建目录(配置、数据、日志、pid) mkdir -p /usr/local/redis/{conf,data,log,pid} # 复制默认配置文件到自定义目录 cp /usr/local/src/redis-6.2.18/redis.conf /usr/local/redis/conf/

三、主库(Master)配置

1. 修改主库配置文件

编辑/usr/local/redis/conf/redis.conf,关键配置如下(注释掉默认项,新增/修改):

# 1. 基础配置 bind 0.0.0.0 # 绑定所有IP(生产可指定内网IP) port 6379 # 端口 daemonize yes # 后台运行 pidfile /usr/local/redis/pid/redis_6379.pid # PID文件路径 logfile /usr/local/redis/log/redis_6379.log # 日志文件路径 dir /usr/local/redis/data/ # 数据目录(RDB/AOF文件存放) # 2. 安全配置 protected-mode no # 关闭保护模式(否则非本机无法连接) requirepass 123456 # 主库密码(生产建议复杂密码) # 3. 持久化配置(必开!避免主库重启后从库同步空数据) save 900 1 # 900秒内至少1次写操作触发RDB save 300 10 # 300秒内至少10次写操作触发RDB save 60 10000 # 60秒内至少10000次写操作触发RDB rdbcompression yes # RDB压缩 dbfilename dump.rdb # RDB文件名 # 4. 复制相关(主库默认开启,无需额外配置) repl-disable-tcp-nodelay no # 优化网络延迟 repl-backlog-size 1gb # 复制积压缓冲区大小(应对从库断连后增量同步)

2. 启动主库

# 启动命令(指定配置文件) /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf # 验证启动状态 ps -ef | grep redis-server | grep 6379 # 或通过Redis客户端连接 /usr/local/redis/bin/redis-cli -p 6379 -a 123456 ping # 返回PONG则正常

四、从库(Slave)配置

以 Slave1(6380 端口)为例,Slave2 仅需修改端口为 6381,其余配置一致。

1. 复制并修改从库配置文件

# 复制配置文件(区分端口) cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis_6380.conf

编辑/usr/local/redis/conf/redis_6380.conf,关键配置如下:

# 1. 基础配置(修改端口、PID、日志路径) bind 0.0.0.0 port 6380 # 从库端口 daemonize yes pidfile /usr/local/redis/pid/redis_6380.pid logfile /usr/local/redis/log/redis_6380.log dir /usr/local/redis/data/ # 2. 安全配置 protected-mode no requirepass 123456 # 从库自身密码(建议和主库一致) masterauth 123456 # 连接主库的密码(必须和主库requirepass一致) # 3. 核心:指定主库地址(Redis5.0+用replicaof,5.0-用slaveof) replicaof 192.168.1.1 6379 # 主库IP+端口 # 4. 从库只读(默认yes,生产建议保持) replica-read-only yes # 5. 持久化(建议开启,避免从库重启后重新全量同步) save 900 1 save 300 10 save 60 10000 rdbcompression yes dbfilename dump_6380.rdb

2. 启动从库

# 启动Slave1 /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6380.conf # 启动Slave2(修改配置文件端口为6381后) /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis_6381.conf # 验证启动状态 ps -ef | grep redis-server | grep -E "6380|6381"

五、验证主从复制

1. 主库查看从库状态

# 连接主库 /usr/local/redis/bin/redis-cli -p 6379 -a 123456 # 查看复制信息 127.0.0.1:6379> info replication

输出关键内容(connected_slaves显示从库数量,slave0/slave1显示从库信息):

# Replication role:master connected_slaves:2 slave0:ip=192.168.1.2,port=6380,state=online,offset=123,lag=0 slave1:ip=192.168.1.3,port=6381,state=online,offset=123,lag=0 ...

2. 从库查看主库状态

# 连接Slave1 /usr/local/redis/bin/redis-cli -p 6380 -a 123456 # 查看复制信息 127.0.0.1:6380> info replication

输出关键内容(role=slavemaster_link_status=up表示连接正常):

# Replication role:slave master_host:192.168.1.1 master_port:6379 master_link_status:up # up表示主从连接正常,down则异常 ...

3. 数据同步验证

# 主库写入数据 /usr/local/redis/bin/redis-cli -p 6379 -a 123456 set name "redis-master" # 从库读取数据(能读到则同步正常) /usr/local/redis/bin/redis-cli -p 6380 -a 123456 get name # 返回"redis-master" /usr/local/redis/bin/redis-cli -p 6381 -a 123456 get name # 返回"redis-master" # 从库尝试写入(默认只读,会报错) /usr/local/redis/bin/redis-cli -p 6380 -a 123456 set age 18 # 报错:(error) READONLY You can't write against a read only replica.

六、临时配置主从(应急场景)

若需临时配置(重启失效),可直接在从库客户端执行:

# 连接从库 /usr/local/redis/bin/redis-cli -p 6380 -a 123456 # 临时指定主库 127.0.0.1:6380> replicaof 192.168.1.1 6379 # 临时设置主库密码 127.0.0.1:6380> config set masterauth 123456

七、常见问题排查

1. 从库master_link_status=down

  • 原因1:防火墙未开放端口 → 开放Redis端口(6379/6380/6381);

  • 原因2:主库开启保护模式 → 主库配置protected-mode no

  • 原因3:主库绑定IP为[127.0.0.1](127.0.0.1) → 主库配置bind 0.0.0.0或内网IP;

  • 原因4:masterauth密码错误 → 核对主库requirepass和从库masterauth

  • 原因5:网络不通 →ping 主库IPtelnet 主库IP 6379验证。

2. 主从数据不同步

  • 原因1:主库未开启持久化 → 主库配置RDB/AOF,避免主库重启后从库同步空数据;

  • 原因2:从库启动早于主库 → 重启从库;

  • 原因3:复制积压缓冲区不足 → 主库增大repl-backlog-size(如1gb)。

3. 从库无法写入

  • 默认配置replica-read-only yes→ 如需写入,改为no(生产不建议)。

八、生产注意事项

  1. 主库必须开启持久化(RDB/AOF),否则主库重启后从库会同步空数据;

  2. 从库数量建议3-5个,过多会增加主库复制压力;

  3. 可配置级联复制(从库作为其他从库的主库),减轻主库压力;

  4. 主从架构无自动故障切换,生产需搭配Redis哨兵(Sentinel)Redis集群(Cluster)

  5. 密码建议通过配置文件设置,避免明文在命令行暴露;

  6. 定期备份主库RDB/AOF文件,防止数据丢失;

  7. 生产环境建议给Redis配置系统服务(systemd),方便启停/开机自启。

九、Redis 系统服务配置(可选)

创建/usr/lib/systemd/system/redis.service,内容如下:

[Unit] Description=Redis Server After=network.target [Service] Type=forking ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf ExecStop=/usr/local/redis/bin/redis-cli -p 6379 -a 123456 shutdown Restart=always User=root Group=root [Install] WantedBy=multi-user.target

启动并设置开机自启:

systemctl daemon-reload systemctl start redis && systemctl enable redis
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/14 20:08:57

【网安科普】网安巨头Palo Alto:2026年网络安全趋势预测

【网安科普】网安巨头Palo Alto:2026年网络安全趋势预测 Palo Alto预言在AI经济下,网络安全将迎来六大新格局: 针对从高管到AI代理的身份伪造欺骗、AI代理变身新内部威胁、如何解决AI数据可信问题、如何应对AI风险的新法律责任、量子倒计时日…

作者头像 李华
网站建设 2026/6/15 0:43:36

CachyOS 内核重装修复流程(更新后启动失败)

准备 使用 CachyOS Live USB 启动进入桌面/终端连接到网络打开终端开始操作1.确认分区(找出根分区和 EFI 分区) 执行查看硬盘与分区文件系统: lsblk -f根据 lsblk 结果,确认你真正的 Linux 系统分区(示例)&…

作者头像 李华
网站建设 2026/6/15 10:22:52

12、DB2数据库备份、恢复与维护全解析

DB2数据库备份、恢复与维护全解析 1. 数据库备份与恢复 当多个备份存储在同一路径时,文件名末尾的时间戳可用于区分备份镜像。恢复命令(RESTORE)能利用该时间戳从特定备份进行恢复。 1.1 数据库恢复类型 崩溃或重启恢复 :假设在运行重要事务到DB2数据库时,突然停电或…

作者头像 李华
网站建设 2026/6/15 11:18:25

跨境出口电商系统如何提升出口电商业务的效率和可管理性?

跨境出口电商业务涉及 “多平台运营、多物流对接、多币种结算、复杂合规要求” 等核心场景,传统手动操作或单一功能系统常面临 “订单处理慢、库存混乱、物流跟踪难、数据分散” 等问题,严重制约业务规模扩张。 本文基于跨境电商系统的实战落地经验&…

作者头像 李华
网站建设 2026/6/14 19:50:18

突破传统:KawaiiLogos如何用可爱视觉重构开源社区生态

突破传统:KawaiiLogos如何用可爱视觉重构开源社区生态 【免费下载链接】KawaiiLogos 项目地址: https://gitcode.com/GitHub_Trending/ka/KawaiiLogos 在开源项目同质化日益严重的今天,一个看似简单的Logo设计项目却在GitHub上掀起热潮。KawaiiL…

作者头像 李华
网站建设 2026/6/15 11:17:32

跨文化团队AI测试的挑战

当AI测试遇见文化多样性 在全球化研发成为常态的今天,超过67%的AI项目团队由分布在不同大洲的成员组成(2024年Gartner数据)。测试作为确保AI质量的关键环节,正面临文化差异带来的深层挑战——这不仅是时区与语言的表层问题&#…

作者头像 李华