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

相关推荐
tatasix3 小时前
Go Redis实现排行榜
开发语言·redis·golang
2401_850410834 小时前
redis的持久化
数据库·redis·bootstrap
Java雪荷4 小时前
基于 Vant UI + Redisson BitSet 实现签到日历
java·redis·vue
xmh-sxh-13144 小时前
redis相关数据类型介绍
redis
MySheep.6 小时前
爬虫数据存储:Redis、MySQL 与 MongoDB 的对比与实践
redis·爬虫·mysql
随猿Fa6 小时前
arthas查看拼接好参数的sql, redis, es完整可直接执行的命令
redis·sql·elasticsearch
学Linux的语莫8 小时前
linux中,redis分布式集群搭建
linux·redis·分布式·mysql
虾球xz11 小时前
游戏引擎学习第64天
redis·学习·游戏引擎
Hello.Reader18 小时前
Redis大Key问题全解析
数据库·redis·bootstrap
B1nna21 小时前
Redis学习(三)缓存
redis·学习·缓存