Redis 主从复制介绍

Redis 的 主从复制 是一种常用的分布式部署模式,在该模式下,数据从主节点(Master)同步到一个或多个从节点(Slave)。主节点负责处理写请求,从节点负责处理读请求。主从复制可以提高系统的可用性、扩展性,并且能够通过分离读写操作来提升性能。

主从复制的工作原理

1.主节点与从节点:

  • 主节点(Master):负责处理所有写请求(SET、INCR、DEL 等)。
  • 从节点(Slave):负责复制主节点的数据,并处理所有读请求(GET、LRANGE、SMEMBERS 等)。

2.复制过程:

  • 启动时,从节点会向主节点发送 SYNC 命令请求复制。
  • 主节点接收到请求后,会将当前数据库的状态传送给从节点,并且开始将新写入的命令通过 增量复制 方式同步到从节点。
  • 从节点会将主节点的数据更新到本地,并且开始处理读请求。

3.复制模式:

  • 全量复制:从节点第一次连接到主节点时,主节点会将数据库中的所有数据发送给从节点,这个过程被称为全量复制。
  • 增量复制:主节点将新产生的写命令实时地同步到从节点,这个过程是增量的。

4.数据同步:

  • RDB快照:Redis 会定期生成 RDB 快照,将数据持久化到磁盘,复制过程中如果涉及到持久化,会在这个快照文件的基础上进行同步。
  • AOF日志:如果启用了 AOF 持久化,写命令会记录到日志中,这些命令会同步到从节点。

假设我们有一个简单的 Redis 集群,包含一个主节点和两个从节点。

步骤 1:启动主节点

首先,启动主节点 Redis 实例。

主节点的 redis.conf 文件内容如下:

# 主节点配置
port 6379
bind 127.0.0.1
daemonize yes
# 不设置 replicaof,表示该节点为主节点

启动主节点:

$ redis-server /path/to/redis.conf

步骤 2:启动从节点

接下来,启动第一个从节点。redis.conf 文件内容如下:

# 从节点配置
port 6380
bind 127.0.0.1
daemonize yes
replicaof 127.0.0.1 6379  # 配置主节点的 IP 和端口

启动从节点:

$ redis-server /path/to/redis.conf

启动第二个从节点,配置与第一个从节点相同,只是端口不同:

# 从节点配置
port 6381
bind 127.0.0.1
daemonize yes
replicaof 127.0.0.1 6379  # 配置主节点的 IP 和端口

$ redis-server /path/to/redis.conf

步骤 3:验证主从复制

  1. 在主节点写入数据:通过 redis-cli 连接到主节点并写入一些数据:
  2. 检查从节点同步数据:通过 redis-cli 连接到从节点 6380,验证是否已经同步主节点的数据:可以看到,从节点已经从主节点同步了 key1 和 key2 的数据。
  3. 继续写入数据:在主节点上继续写入数据:这时,从节点会自动同步该写操作。
  4. 验证数据同步:再次通过 redis-cli 连接从节点,检查是否同步了 key3:

步骤 4:手动故障转移(可选)

如果主节点出现故障(如宕机),从节点不会自动成为主节点,除非通过外部机制(如 Redis Sentinel)进行故障转移。

不过,可以手动通过以下命令来让某个从节点提升为主节点:

$ redis-cli -p 6380
> SLAVEOF NO ONE

该命令会使从节点停止复制,并变成主节点。此时,该节点就会接受写请求,其他从节点会自动复制新的主节点的数据。

主从复制的优缺点

优点

  • 提高读性能:通过将读取请求分发到多个从节点,可以大大提高 Redis 系统的读性能。
  • 数据冗余:从节点充当主节点的备份,增强数据的安全性和可用性。
  • 简易配置:主从复制的配置非常简单,适合中小型应用。

缺点

  • 写入性能受限:写操作只能通过主节点进行,无法通过从节点处理,因此写性能仍然受限于主节点的负载。
  • 无自动故障转移:如果主节点出现故障,系统不会自动进行故障转移。需要借助 Redis Sentinel客户端实现故障转移
  • 一致性问题:从节点的数据是异步复制的,可能会存在短暂的不一致性,尤其是在主节点写操作非常频繁时。
Redis的碎碎念 文章被收录于专栏

Redis面试中的碎碎念

全部评论

相关推荐

活泼的代码渣渣在泡池...:哈哈哈挺好的,我也上岸美团了,不说了,我又接了一单
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务