Redis 教程 - 主从复制

Redis 教程 - 主从复制

Redis 支持主从复制(Master-Slave Replication),通过主从复制可以将一个 Redis 服务器(主节点)的数据复制到其他 Redis 服务器(从节点),以实现数据的冗余备份、读写分离等功能。本教程将介绍 Redis 主从复制的配置和使用方法。

1. 配置主节点

首先,需要配置主节点以允许从节点连接和复制数据。

在主节点的 Redis 配置文件(redis.conf)中,进行以下设置:

复制代码
# 启用主节点
slave-serve-stale-data yes
# 设置密码(可选)
requirepass <password>

其中,slave-serve-stale-data 设置为 yes 表示主节点在没有有效连接的从节点时仍然提供数据。

如果需要设置密码进行连接验证,可以使用 requirepass 设置密码。

2. 配置从节点

接下来,需要配置从节点来连接主节点并复制数据。

在从节点的 Redis 配置文件中,进行以下设置:

复制代码
# 启用从节点
slaveof <master-ip> <master-port>
# 设置密码(如果主节点有密码)
masterauth <password>

其中,slaveof 命令用于指定从节点连接的主节点的 IP 地址和端口号。

如果主节点设置了密码进行连接验证,需要使用 masterauth 设置密码。

3. 启动主从复制

完成主节点和从节点的配置后,按照以下步骤启动主从复制:

  1. 启动主节点 Redis 服务器。
  2. 启动从节点 Redis 服务器。

从节点连接到主节点后,会开始复制主节点的数据。你可以使用 Redis 命令检查主从复制的状态。

以下是一些常用的命令:

  • INFO replication:查看主从复制的信息。
  • SLAVEOF no one:断开从节点与主节点的连接,停止主从复制。
  • SLAVEOF <master-ip> <master-port>:将从节点连接到另一个主节点,切换主节点。

4. 主从复制的应用

主从复制可以用于以下场景和应用:

  • 数据冗余备份:通过复制数据到从节点,实现数据的冗余备份,提高数据的可靠性。
  • 读写分离:将读请求分发到从节点,减轻主节点的负载,提高系统整体的吞吐量。
  • 故障切换:当主节点发生故障时,可以将其中一个从节点升级为主节点,实现快速故障切换。

5. 举个例子

当你打开一个 Redis 命令行客户端时,可以按照以下步骤进行 Redis 主从复制的示例操作:

  1. 打开一个终端窗口,并输入以下命令以启动 Redis 命令行客户端:

    复制代码
    redis-cli
    ```
  2. 连接到主节点(Master):

    在命令行中输入以下命令来连接到主节点:

    复制代码
    127.0.0.1:6379> INFO replication

    这将显示主节点的相关信息,包括主从复制的状态。

  3. 配置主节点:

    在主节点的 Redis 配置文件中(通常是 redis.conf),确保以下设置:

    复制代码
    # 启用主节点
    slave-serve-stale-data yes
  4. 启动从节点(Slave):

    在另一个终端窗口中,启动另一个 Redis 服务器实例作为从节点。使用以下命令:

    复制代码
    redis-server --port 6380 --slaveof 127.0.0.1 6379

    这将启动一个从节点,该节点将连接到本地主节点。

  5. 验证主从复制状态:

    回到 Redis 命令行客户端,在主节点的命令行窗口中,输入以下命令来查看主从复制的状态:

    复制代码
    127.0.0.1:6379> INFO replication

    这将显示主节点和从节点的相关信息,包括主从节点的连接状态和复制偏移量。

  6. 进行数据操作:

    在主节点的命令行窗口中进行一些数据操作,例如设置键值对:

    复制代码
    127.0.0.1:6379> SET mykey "Hello, Redis!"

    这将在主节点上设置一个键为 mykey,值为 "Hello, Redis!" 的键值对。

  7. 验证数据复制:

    在从节点的命令行窗口中,输入以下命令来验证数据是否被成功复制到从节点:

    复制代码
    127.0.0.1:6380> GET mykey

    如果数据成功复制,将返回与主节点相同的值。

通过以上步骤,就表示成功地进行了 Redis 主从复制的示例操作。

相关推荐
用户69190268133914 分钟前
Redis 1:简述Redis概念与Agent的联系
redis·后端·设计
小南家的青蛙2 小时前
华为云DCS全形态原生Redis命令兼容性测试方案
redis·华为云·兼容性·兼容性测试·dcs
xiaoqiMikko2 小时前
Redis 实战(三):持久化出错 —— fork 失败、磁盘写满、AOF 膨胀与损坏,逐个复现(6.2.4)
redis·后端
IT规划师2 小时前
面试中被嘲笑Token放在redis里,该如何应对?
redis·面试
我不会起名字3224 小时前
Redis 从 0 到 1(十九):JWT 还是 Redis Session?登录态存储的 Go 实现
redis·go·jwt·session·登录态
我不会起名字3224 小时前
Redis 从 0 到 1(十六):1 亿 UV 只占 12KB?计数去重三件套的 Go 实测
redis·go·uv·布隆过滤器·hyperloglog
码剑客7 小时前
Gin+GORM+Redis 项目开发常见性能坑汇总(Go后端避坑指南)
redis·后端·golang·gin
snow@li7 小时前
redis:RedisDesktopManager(RDM/RESP.app)Redis 数据可视化全景深度梳理
数据库·redis·缓存
海棠Flower未眠8 小时前
下单请求处理流程:商品维度分布式锁与 Redis 预扣库存
redis·分布式·junit