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 主从复制的示例操作。

相关推荐
流星白龙2 小时前
【Redis】2.Redis重大版本
数据库·redis·junit
流星白龙2 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
流星白龙3 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
流星白龙6 小时前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
Season45010 小时前
Redis命令 (generic即通用命令)
数据库·redis·bootstrap
我不想名字重复12 小时前
redis缓存和数据库数据保持一致
数据库·redis·缓存
流星白龙14 小时前
【Redis】6.计数其他命令
数据库·redis·缓存
流星白龙14 小时前
【Redis】8.List列表
redis
NWU_白杨15 小时前
三种常用的数据存储技术
数据库·redis·mysql·sqlite
我叫黑大帅15 小时前
我为什么单一消费者的场景下,要用 Redis List 当消息队列?
redis·后端·面试