Redis实战篇——搭建主从复制
- 1.Redis主从
- 1.1.主从集群结构
- 1.2.搭建主从集群
- 1.2.1.启动多个Redis实例
- 1.2.2.建立集群
- 1.2.3.测试
1.Redis主从
单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。
1.1.主从集群结构
下图就是一个简单的 Redis 主从集群结构:

如图所示,集群中有一个 master 节点、两个 slave 节点(现在叫replica)。当我们通过 Redis 的 Java 客户端访问主从集群时,应该做好路由:
- 如果是写操作,应该访问 master 节点,master 会自动将数据同步给两个 slave 节点
- 如果是读操作,建议访问各个 slave 节点,从而分担并发压力
1.2.搭建主从集群
我们会在同一个虚拟机中利用3个Docker容器来搭建主从集群,容器信息如下:
| 容器名 | Value | ip : 端口 |
|---|---|---|
| r1 | master | 192.168.xx.xxx:7001 |
| r2 | slave | 192.168.xx.xxx:7002 |
| r3 | slave | 192.168.xx.xxx:7003 |
1.2.1.启动多个Redis实例
我们利用 docker 进行部署
docker-compose 如下
不会使用 docker 可以查看以下文章:
一文带你安装 Centos 安装 Docker
Docker 常用命令大全!!
docker-compose.yaml 文件如下:
version: "3.2"services:r1:image: rediscontainer_name: r1network_mode: "host"entrypoint: ["redis-server", "--port", "7001"]r2:image: rediscontainer_name: r2network_mode: "host"entrypoint: ["redis-server", "--port", "7002"]r3:image: rediscontainer_name: r3network_mode: "host"entrypoint: ["redis-server", "--port", "7003"]
上传至 /root/redis 目录下:

执行命令,搭建集群:
docker compose up -d
查看 docker 容器,可以看到都正常启动了

查看端口映射:

1.2.2.建立集群
虽然我们启动了3个 Redis 实例,但是它们并没有形成主从关系。我们需要通过命令来配置主从关系:
# Redis5.0以前
slaveof <masterip> <masterport>
# Redis5.0以后
replicaof <masterip> <masterport>
有临时和永久两种模式:
- 永久生效:在
redis.conf文件中利用slaveof命令指定master节点 - 临时生效:直接利用
redis-cli控制台输入slaveof命令,指定master节点
我们测试临时模式,首先连接 r2 ,让其以 r1 为master
# 连接r2
docker exec -it r2 redis-cli -p 7002
# 认r1主,也就是7001
slaveof 192.168.xx.xxx 7001
使用info replication 命令查看 r2 状态,可以看到他的 master 已经是 7001

有个小问题,那么我们还没连接的时候,他的身份是什么呢?
这里我们连接 r3 查看他的状态中的 role

没错,他是他自己的主人!
然后连接 r3 ,让他变成 r1 的 slave 。。。
# 连接r3
docker exec -it r3 redis-cli -p 7003
# 认r1主,也就是7001
slaveof 192.168.xx.xxx 7001
然后连接 r1 ,查看集群状态:
# 连接r1
docker exec -it r1 redis-cli -p 7001
# 查看集群状态
info replication

可以看到,当前节点 r1:7001 的角色是 master,有两个slave与其连接:
- slave0:
port是7002,也就是r2节点 - slave1:
port是7003,也就是r3节点
1.2.3.测试
依次在 r1 、 r2 、r3 节点上执行下面命令:
set num 123
get num
结果如下:

那么我们可以在从节点 set 吗?

显然是不行的 ~
至此,我们就部署了简单的 Redis 的主从复制 ~
参考:
https://www.bilibili.com/video/BV1S142197x7?p=142&vd_source=f586bbf89de5904ba5a05a8c1d18f1c4