在redis中转储和恢复特定密钥的数据

Joy*_*Joy 9 backup dump restore redis

我想在我的redis中备份具有多个键的特定键.我的redis有很多键,我不想完全备份我的redis数据.我一直在浏览http://redis.io/commands.在那里我发现有一个命令转储,我可以通过它转储特定的密钥,如下所示:

 redis> dump "myKey"
Run Code Online (Sandbox Code Playgroud)

但是仅在redis控制台中以十六进制格式提供输出.是否可以将特定密钥的数据存储在文件中,然后将其导入该密钥?

Bre*_*ood 25

如果您尝试从命令行转储/恢复密钥(这是我在发现此问题时需要执行的操作),Redis有一些非显而易见的怪癖.请参阅此答案以获取更详细的说明.

简短的回答是转储/恢复如下:

bwood@mybox:~$ redis-cli --raw dump mykey | head -c-1 > myfile
bwood@mybox:~$ cat myfile | redis-cli -x restore mynewkey 0
Run Code Online (Sandbox Code Playgroud)

  • 如果有人对批处理脚本感兴趣,以获取所有密钥并将它们保存到 $( redis-cli KEYS \apikey* ); 中的每个密钥的文件 ```#!/bin/bash 中 redis-cli --raw dump mykey | 执行 redis-cli --raw dump mykey | do redis-cli --raw dump mykey head -c-1 > dump/$each done``` 这些可用于随后通过 Brendan Wood 的上述脚本导入 (2认同)

use*_*516 5

关注这个帖子:

bwood@mybox:~$ redis-cli --raw dump mykey | head -c-1 > myfile
bwood@mybox:~$ cat myfile | redis-cli -x restore mynewkey 0
Run Code Online (Sandbox Code Playgroud)

如果这对您不起作用,并且您收到如下错误:head:非法字节数 -- -1

然后修改dump命令,不带head命令:

redis-cli --raw dump mykey > myfile

现在,在 mac 上使用 sublime 打开转储文件或在 PC 上使用 textpad 并删除最后两个字符并保存,然后进行恢复。

这是我的最后两行:

 0561 7074 7572 6520 fa00 5be0 0526 015d
 7d06 00a7 afed c100 323d 400a 
Run Code Online (Sandbox Code Playgroud)

我删除了“0a”并保存并且恢复工作,例如

0561 7074 7572 6520 fa00 5be0 0526 015d
7d06 00a7 afed c100 323d 40
Run Code Online (Sandbox Code Playgroud)

  • 如果任何使用 OSX 的人收到错误“ head: ilegal byte count -- -1 ”,“ ghead -c-1 ”将可以安装 coreutils 。(brew 安装 coreutils) (4认同)

Ser*_*sev 2

编写一个需要DUMP密钥的脚本,将输出保存到文件中,然后您可以读取这些文件并将其内容推送到RESTORE命令。