Redis 主从复制集群搭建教程
目录
- 为什么要搭建 Redis 主从复制集群?
- 搭建 Redis 主从复制集群
- 前提条件
- 步骤一:创建 Docker 网络
- 步骤二:启动 Redis 主节点
- 步骤三:启动 Redis 从节点
- 步骤四:验证复制状态
- 步骤五:使用 Python 连接 Redis 集群
为什么要搭建 Redis 主从复制集群?
在生产环境中,单节点 Redis 存在以下几个问题:
- 单点故障风险:如果唯一的 Redis 节点发生故障,整个系统将无法访问缓存数据。
- 性能瓶颈:所有读写请求都集中在单个节点上,容易成为系统瓶颈。
- 数据安全性低:数据只存在于一个节点,如果该节点数据丢失,将无法恢复。
- 维护困难:单节点维护(如升级)时,会导致服务不可用。
主从复制集群通过引入多个节点解决了这些问题:
- 读写分离:主节点处理写操作,从节点处理读操作,提高系统吞吐量
- 高可用性:主节点故障时,可以提升从节点为新的主节点
- 数据备份:数据在多个节点上存在副本,提高数据安全性
- 负载均衡:读请求可以分散到多个从节点,减轻主节点压力
搭建 Redis 主从复制集群
前提条件
- 已安装 Docker
- 基本了解 Redis 和 Docker 命令
步骤一:创建 Docker 网络
首先,创建一个专用网络,使 Redis 容器之间可以通过容器名称相互通信:
docker network create redis-cluster
步骤二:启动 Redis 主节点
启动一个 Redis 容器作为主节点,并将其端口映射到主机:
docker run -d -p 6379:6379 --name redis-master --network redis-cluster redis
步骤三:启动 Redis 从节点
启动两个 Redis 从节点,并配置它们跟随主节点:
docker run -d -p 6380:6379 --name redis-slave1 --network redis-cluster redis redis-server --slaveof redis-master 6379
docker run -d -p 6381:6379 --name redis-slave2 --network redis-cluster redis redis-server --slaveof redis-master 6379
步骤四:验证复制状态
连接到主节点,检查复制状态:
docker exec -it redis-master redis-cli
在 Redis CLI 中执行:
INFO replication
您应该看到类似以下输出:
# Replication
role:master
connected_slaves:2
slave0:ip=172.xx.xx.xx,port=6379,state=online,offset=xxx,lag=0
slave1:ip=172.xx.xx.xx,port=6379,state=online,offset=xxx,lag=0
步骤五:使用 Python 连接 Redis 集群
创建一个 Python 脚本来连接和使用 Redis 集群:
import redis# 连接到主节点(写操作)
master = redis.StrictRedis(host='localhost', port=6379, db=0)# 连接到从节点(读操作)
slave = redis.StrictRedis(host='localhost', port=6380, db=0)def write_to_master(key, value):# 写操作发送到主节点master.set(key, value)def read_from_slave(key):# 读操作发送到从节点value = slave.get(key)if value:return value.decode('utf-8') # 将字节字符串解码为普通字符串return None# 示例使用
write_to_master('foo', 'bar')
value = read_from_slave('foo')
print(value)