1. 概念
主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master/Leader),后者称为从节点(Slave/Follower),数据的复制是单向的!只能由主节点复制到从节点(主节点以写
为主,从节点以读
为主)。
默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但每个从节点只能有一个主节点。
2. 作用
- 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余的方式。
- 故障恢复:当主节点故障时,从节点可以暂时替代主节点提供服务,是一种服务冗余的方式。
- 负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的压力;尤其是在读多写少的场景下,通过多个从节点分担负载,提高并发量。
- 高可用基石:主从复制还是哨兵和集群能够实施的基础。
3. 为什么使用集群
- 单台服务器难以负载大量的请求
- 单台服务器故障率高,系统崩坏概率大
- 单台服务器内存容量有限
4. 环境配置
redis.conf 中的replication
模块
查看当前库的信息:info replication
127.0.0.1:6379> info replication # 查看当前库的信息
# Replication
role:master # 角色 master
connected_slaves:0 # 从机 0 个
master_replid:9a78b49fde23e317cda2a52eccbaa575e28dcab5
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
既然需要启动多个服务,就需要多个配置文件。
每个配置文件对应修改一下信息:
- 端口号
- pid文件名
- 日志文件名
- rdb文件名
启动单机多服务集群
5. 一主二从配置
默认情况下,每台Redis服务器都是主节点;我们一般情况下只用配置从机就好了
一主(79)二从(80,81)
使用slaveof host port
命令就可以为从机配置主机了
- 6380
- 6381
- 主机6379
这里是使用命令搭建,是暂时的,真实开发中应该在从机的配置文件中进行配置,这样的话是永久的
6. 使用规则
- 从机只能读,不能写,主机可读可写,但多用于写。
# 从机6381 只能读不能写 127.0.0.1:6381> set name zhangsan (error) READONLY You can't write against a read only replica. 127.0.0.1:6381> get name "zhangsan" # 主机6379 可以读写 127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> get name "zhangsan"
- 当主机断电宕机后,默认情况下从机的角色不会发生变化,集群中只是失去了写操作, 当主机恢复以后,又会连接上从机恢复原状。
- 当从机断电宕机后,若不是使用配置文件配置的从机,再次启动后作为主机是无法获取之前主机的数据的,若此时重新配置成为从机,又可以获取到主机的所有数据。这里就要提到一个同步原理。
- 第二条中提到,默认情况下,主机故障后,不会出现新的主机,有两种方式可以产生新的主机:
- 从机手动执行
slaveof no one
,这样执行以后从机会独立出来成为一个主机 - 使用哨兵模式(自动选举)
- 从机手动执行
如果主机断开了连接,可以使用
slaveof no one
让自己变成主机!其他的节点就可以手动连接到最新的主节点(手动)!如果这时候主机恢复了,那么就重新连接!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?