从零开始的 Redis 主从架构搭建与实战验证

从零开始的 Redis 主从架构搭建与实战验证。

文章目录

一、 引言

主从部署(Master-Slave Deployment),本质上就是:

一台服务器负责"写",另一台或多台服务器负责"复制和读"。

假设你有个校园二手平台:

  • 用户发商品
  • 用户下单
  • 用户搜索商品
  • 用户看详情

其中:

  • "发商品、下单"属于写操作
  • "搜索、查看"属于读操作

如果全压在一个数据库:

一个数据库:

又读又写又计算

CPU:我要报警了

于是:

主库(Master)

负责:

insert

update

delete
从库(Slave)

负责:

select 查询

结构如下:
用户请求
写操作
读操作
主库
从库
数据同步
从库

二、 环境准备与拓扑结构

你需要:

1个主节点(Master)

2个从节点(Replica/Slave)

角色 端口
主节点 6379
从节点1 6380
从节点2 6381

三、 核心搭建步骤

1、复制 Redis 配置文件

先找到你的 redis.conf。

我的redis.conf文件路径如下:

bash 复制代码
/usr/local/bin/redis.conf

然后创建三个配置文件:

bash 复制代码
cp redis.conf redis6379.conf
cp redis.conf redis6380.conf
cp redis.conf redis6381.conf

2、修改三个配置文件

  1. 主节点配置(6379)
    编辑:
bash 复制代码
vi redis6379.conf

修改如下地方:

bash 复制代码
port 6379     # 139行
daemonize yes     # 327行
pidfile /var/run/redis6379.pid     # 359行,指定 Redis 进程号(PID)的保存文件路径
logfile "6379.log"     # 373行,指定 Redis 的日志文件名叫 6379.log
dir ./data6379     # 533行,指定 Redis 的工作目录 = 当前目录下的 data6379 文件夹

一定一定一定要创建目录

bash 复制代码
mkdir data6379

3、配置从节点

因为我设置了两个从节点,下面只演示一个节点的配置,port 6381重复步骤即可。

依旧编辑:

bash 复制代码
vi redis6380.conf

修改:

bash 复制代码
port 6380
daemonize yes
pidfile /var/run/redis6380.pid
logfile "6380.log"
dir ./data6380

replicaof 127.0.0.1 6379     # 556行,把当前 Redis 设成【本机 6379 端口】的从库

依旧创建目录,不要忘记!!!

bash 复制代码
mkdir data6380

4、启动三个 Redis

启动!

bash 复制代码
redis-server redis6379.conf
redis-server redis6380.conf
redis-server redis6381.conf

5、查看是否启动成功

查看进程:

bash 复制代码
ps -ef | grep redis

若是启动成功则应该显示如图所示:

带有 redis-server 关键字的进程就是成功启动的进程。

四、主从功能验证

a、连接主节点

第一步连接主节点:

bash 复制代码
redis-cli -p 6379

写入:

bash 复制代码
set name ytx

b、连接从节点

新开终端:

bash 复制代码
redis-cli -p 6380

查询:

bash 复制代码
get name

如果步骤正确你将会看见以下截图所示:

c、查看主从信息

主节点:

bash 复制代码
info replication

你会看到主节点显示:

bash 复制代码
role:master
connected_slaves:2

从节点显示:

bash 复制代码
role:slave
master_host:127.0.0.1

还有一个重点体现,当你在从节点输入:

bash 复制代码
set age 18

这是因为:从节点默认只读

上面这个小例子很好的说明了

Redis 读写分离

总结:为什么要主从部署

1、读写分离

在实际业务中,数据库通常是"读多写少"。主从架构让主节点(6379)专注于处理写请求,从节点(6380/6381)专注于处理读请求。各司其职,大幅优化了服务器的资源利用率。

2、提高并发

随着访问量激增,单台 Redis 的网络 IO 和 CPU 往往会成为瓶颈。通过引入多个从节点共同分担读流量,集群的并发读能力得到了成倍的提升,轻松应对高并发场景。

3、数据备份

主从复制实现了数据的多机热备份。当主节点不幸宕机或发生硬件故障时,从节点上依然保存着完整的数据,为系统的容灾恢复和后续的故障转移(如哨兵模式)提供了坚实的基础。

搭建好主从架构,只是我们迈向 Redis 高可用架构的第一步。虽然它实现了读写分离和数据备份,但如果主节点挂了,目前还需要我们手动去执行 REPLICAOF NO ONE 来切换主节点。在下一篇文章中,我将带大家继续进阶,解锁能实现自动故障转移的------Redis Sentinel(哨兵模式)!

相关推荐
海市公约2 小时前
Redis五大基础数据类型命令详解与经典应用场景
redis·list·set·hash·string·zset·缓存架构
学习中.........2 小时前
万字硬核解析:从零看透 Transformer 与大语言模型(架构、数学与工程实践)
语言模型·架构·transformer
Devin~Y2 小时前
大厂 Java 面试实录:Spring Boot微服务/Kafka/Redis/K8s可观测性 + RAG Agent(小Y社死版)
java·spring boot·redis·spring cloud·kafka·kubernetes·micrometer
意图共鸣2 小时前
意图共鸣科技发布《认知智能白皮书》:从华为“逻辑折叠”看认知架构(CA)的“感知-仲裁”解耦设计
科技·华为·架构
LONGZETECH2 小时前
Unity 3D+C/S架构无人机数字孪生实训室:破解实训“三高”难题的底层技术实现
c语言·开发语言·3d·unity·架构·无人机
DolphinDB智臾科技2 小时前
基于 DolphinDB 搭建微服务的 SpringBoot 项目
spring boot·微服务·架构
SuperEugene2 小时前
前端权限架构设计:路由/菜单/按钮/数据 四级权限体系|权限与菜单架构篇
前端·架构
SL-staff2 小时前
规则引擎技术选型指南:从开源Drools到企业级方案,架构演进与私有化实践
架构·开源·私有化部署·架构设计·规则引擎·drools·jvs-rules
fengxin_rou2 小时前
【后端配置模块实战】:索引、中间件与缓存架构全解析
缓存·中间件·架构