原始帖子: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
。
对工人做同样的事情,但将端口更改为6378并更改连接名称。
复制服务器
启动,展开第一个服务器并添加新密钥。
现在,打开与Worker服务器的连接,然后单击CLI按钮连接到服务器。
首先,将主通行证设置为some_pass
(因为我们为这两个服务器使用了相同的密码)。
config set masterauth some_pass
然后,使用replicaof
命令指向主服务器。
replicaof redis 6379
单击“刷新”图标,您应该看到主服务器键复制。向主人添加更多键,工人将继续复制。
要停止复制,您可以使用以下内容。
replicaof no one
结论
就是复制的基础知识。如果您想快速复制一些数据进行测试,这会有所帮助。还有很多要探索的东西,但这应该是一个好的开始。