Redis中的基本复制
#redis #复制

原始帖子:https://koalatea.io/redis-replicate/

介绍

在本文中,我们将简要介绍如何在Redis中复制。在生产中,您通常需要使用群集或管理实例。但是,学习如何手动复制将有助于一些临时备份或调试。

设置

对于本文,我们将使用Docker和Docker组成,因此请先安装这些。

接下来创建一个名为docker-compose.yml的新文件。

将以下内容添加到顶部,以声明我们的版本和服务:

version: "3.2"
services:

警告,Redis仍然使用旧的主语言和从属语言,但这是旧的,应该更改。

考虑到这一点,让我们添加称为redis的主服务(主要)服务。这里的一切都是标准的,除了我们通过REDIS_REPLICATION_MODE=master

redis:
    image: "redis:alpine"
    command: redis-server --requirepass some_pass
    ports:
     - "6379:6379"
    volumes:
      - $PWD/redis-data:/var/lib/redis
      - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=master

接下来,让我们添加一个从属(Worker)服务器。在这里,我们将本地映射端口更改为6378,并将复制模式设置为slave

redis2:
  image: "redis:alpine"
  command: redis-server --requirepass some_pass
  ports:
    - "6378:6379"
  volumes:
    - $PWD/redis-data:/var/lib/redis
    - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
  environment:
    - REDIS_REPLICATION_MODE=slave

完整文件看起来如下。

version: "3.2"
services:
 redis:
    image: "redis:alpine"
    command: redis-server --requirepass some_pass
    ports:
     - "6379:6379"
    volumes:
      - $PWD/redis-data:/var/lib/redis
      - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=master

 redis2:
    image: "redis:alpine"
    command: redis-server --requirepass some_pass
    ports:
     - "6378:6379"
    volumes:
      - $PWD/redis-data:/var/lib/redis
      - $PWD/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
     - REDIS_REPLICATION_MODE=slave

现在,使用docker-compose up

启动服务

连接到redis服务器

接下来,我们需要连接到REDIS服务器。为此,我使用开源GUI:

单击“新连接”,然后输入以下信息。您可以将连接名称更改为您想要的任何东西。为此,我将其命名为“主要”。如果您使用了上面的YML文件,则应为some_pass

redis new connection

对工人做同样的事情,但将端口更改为6378并更改连接名称。

复制服务器

启动,展开第一个服务器并添加新密钥。

add new key

save new key

现在,打开与Worker服务器的连接,然后单击CLI按钮连接到服务器。

redis-cli

首先,将主通行证设置为some_pass(因为我们为这两个服务器使用了相同的密码)。

config set masterauth some_pass

然后,使用replicaof命令指向主服务器。

replicaof redis 6379

单击“刷新”图标,您应该看到主服务器键复制。向主人添加更多键,工人将继续复制。

replicate data

要停止复制,您可以使用以下内容。

replicaof no one

结论

就是复制的基础知识。如果您想快速复制一些数据进行测试,这会有所帮助。还有很多要探索的东西,但这应该是一个好的开始。