使用MIGRATE复制Redis数据库中的所有密钥

ant*_*tor 8 redis

是否可以使用MIGRATE?将所有密钥从一个Redis实例复制到另一个远程实例?我试过COPY,REPLACEKEYS没有任何的运气.每次我得到NOKEY回复.如果我使用MIGRATE单个键的任何命令,它就可以工作.

例子:

MIGRATE my.redis 6379 "*" 0 5000 REPLACE // NOKEY
MIGRATE my.redis 6379 "*" 0 5000 COPY // NOKEY
MIGRATE my.redis 6379 "" 0 5000 KEYS * // NOKEY

MIGRATE my.redis 6379 "" 0 5000 KEYS test // OK
Run Code Online (Sandbox Code Playgroud)

lot*_*ogs 8

这是@ezain提供的答案的一种改进,因为我无法发表评论。该命令使用正确的redis语法来处理成批的键,但是参数导致每个键被调用一次,而不是包含所有键一次被调用(这意味着完成该键所花的时间比实际要多得多)必要)。在所有情况下,以下操作都会更快:xargs

redis-cli --raw KEYS '*' | xargs redis-cli MIGRATE my.redis 6379 "" 0 5000 KEYS

如果目标受密码保护:

  • redis-cli --raw KEYS '*' | xargs redis-cli MIGRATE my.redis 6379 "" 0 5000 AUTH password-here KEYS

  • 我已经更新了答案以包含密码保护目的地的示例。 (2认同)

eza*_*ain 5

尝试在您的外壳中运行

redis-cli keys '*' | xargs -I '{}' redis-cli migrate my.redis 6379 "" 0 5000 KEYS '{}'
Run Code Online (Sandbox Code Playgroud)

  • `redis-cli -n 2键'*'| xargs -I'{}'redis-cli -n 2迁移my.redis 6379“” 3 5000 KEYS'{}'`从默认redis db 2复制到my.redis db 3 (2认同)