1. 什么是 Redis 主从复制
Redis 主从复制(Master-Slave Replication)允许一个 Redis 实例作为主节点(Master),多个 Redis 实例作为从节点(Slave),从节点会自动同步主节点的数据,并在主节点发生写操作时实时更新。
- 主节点:处理所有写操作,数据变更会同步到从节点。
- 从节点:接收并同步主节点的所有数据,处理只读请求。
2. 环境准备
假设我们有两台服务器,分别作为主节点和从节点:
- 主节点:
192.168.1.100
- 从节点:
192.168.1.101
Redis 安装路径为 /usr/local/bin
,配置文件路径为 /usr/local/bin/redis.conf
。
3. 配置主节点
首先,确保主节点的 Redis 已正常启动,并且允许从节点连接。
3.1 修改主节点配置文件
打开主节点的 Redis 配置文件 /usr/local/bin/redis.conf
,确认以下配置:
bind 0.0.0.0
确保 Redis 可以监听所有网络接口,允许从节点连接。
3.2 启动主节点
启动 Redis 主节点服务:
redis-server /usr/local/bin/redis.conf
确认 Redis 主节点已经启动并监听默认端口(6379):
netstat -ntlp | grep redis
4. 配置从节点
接下来,在从节点服务器上配置主从同步。
4.1 修改从节点配置文件
打开从节点的 Redis 配置文件 /usr/local/bin/redis.conf
,修改以下配置:
replicaof 192.168.1.100 6379
将 192.168.1.100
替换为主节点的 IP 地址,6379
是 Redis 的默认端口。
4.2 启动从节点
启动 Redis 从节点服务:
redis-server /usr/local/bin/redis.conf
从节点启动后会自动与主节点建立连接,并开始同步主节点的数据。
5. 验证主从复制
在主节点执行以下命令:
redis-cli
执行一个写操作,插入一些数据:
SET key1 "value1"
然后,登录到从节点,执行查询操作:
redis-cli
GET key1
如果返回值为 value1
,则表明主从复制配置成功。
6. 主从复制的高可用性
在实际生产环境中,主从复制能够有效提高 Redis 服务的高可用性。常见的用法包括:
- 读写分离:所有写操作在主节点上执行,从节点处理读操作,提高系统的读写性能。
- 主节点故障切换:当主节点出现故障时,可以手动或自动将从节点提升为主节点,保证服务的持续性。
7. 进阶:哨兵模式
为了实现更高的可用性,Redis 提供了哨兵(Sentinel)模式,能够自动监控主节点的健康状况并在主节点故障时进行自动故障转移(Failover),将一个从节点提升为新的主节点。