【赵渝强老师】Redis数据的迁移

通过使用Redis的键迁移功能,可以把数据从一个Redis数据库中迁移到另一个数据库中,例如从生产环境迁移到测试环境。Redis提供了move、dump+restore和migrate三种不同的方式来实现键的迁移。
| 视频讲解如下 |
|---|
| 【赵渝强老师】Redis数据的迁移 |
一、 使用move命令实现数据的内部迁移
下面通过具体的示例来演示move命令的使用。
(1)查看move命令的帮助信息。
127.0.0.1:6379> help move
MOVE key db
summary: Move a key to another database
since: 1.0.0
group: generic
(2)使用move命令移动键。
127.0.0.1:6379> move mykey1 3
(integer) 1
(3)切换到3号数据库中查看键。
127.0.0.1:6379> select 3
OK
127.0.0.1:6379[3]> keys *
1) "mykey1"
127.0.0.1:6379[3]>
二、 使用dump+restore实现实例间数据的迁移
dump+restore可以实现在不同的Redis实例之间进行数据迁移的功能,整个迁移的过程分为两步:首先,在源Redis数据库实例上,dump命令会采用的是RDB格式将键值序列化;其次,在目标Redis数据库实例上,restore命令将dump命令生成的键值执行反序列化进行复原。下面通过具体的示例来进行演示
(1)通过help命令查看dump命令的帮助信息。
127.0.0.1:6379> help dump
DUMP key
summary: Return a serialized version of the value stored at
the specified key.
since: 2.6.0
group: generic
(2)在源Redis数据库实例上插入数据,并使用dump命令进行持久化。
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> dump hello
"x00x05worldtx00xc9#mHx84/x11s"

(3)通过help命令查看restore命令的帮助信息。
127.0.0.1:6379> help restore
RESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]
summary: Create a key using the provided serialized value,
previously obtained using DUMP.
since: 2.6.0
group: generic# 其中:ttl参数代表数据的过期时间。当ttl为0时,表示数据永远不过期。
(4)在目标Redis数据库实例上使用restore命令恢复数据。
127.0.0.1:6379> restore hello 0 "x00x05worldtx00xc9#mHx84/x11s"
OK
127.0.0.1:6379> get hello
"world"
三、 使用migrate实现实例间数据的迁移
migrate命令也可以用于在Redis数据库实例之间进行数据迁移的。实际上migrate命令就是将dump、restore、del三个命令进行组合,从而简化了操作流程。migrate命令具有原子性,并且从Redis3.0.6版本开始支持迁移多个键的功能,有效地提高了迁移效率。下面通过一个具体的示例来演示migrate命令的使用。
(1)使用help命令查看migrate命令的帮助信息。
127.0.0.1:6379> help migrate
MIGRATE host port key| destination-db timeout [COPY] [REPLACE] [AUTH password] [AUTH2 username password] [KEYS key]
summary: Atomically transfer a key from a Redis instance to another one.
since: 2.6.0
group: generic
(2)从源Redis数据库实例上迁移键到目标Redis数据库实例。
127.0.0.1:6379> migrate 192.168.79.12 6379 hello 0 1000
OK
(3)在目标Redis数据库实例上检查数据是否迁移成功。
127.0.0.1:6379> keys *
1) "hello"
127.0.0.1:6379> get hello
"world"
(4)在源Redis数据库实例上再次执行migrate命令。
127.0.0.1:6379> migrate 192.168.79.12 6379 hello 0 1000
NOKEY# 提示:migrate命令执行完成后,会删除源Redis数据库实例上键。

