Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在redis中转储和恢复特定密钥的数据_Redis_Backup_Restore_Dump - Fatal编程技术网

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

在redis中转储和恢复特定密钥的数据,redis,backup,restore,dump,Redis,Backup,Restore,Dump,我想备份我的redis中具有多个密钥的特定密钥。我的redis有很多密钥,我不想对我的redis数据进行完全备份。我一直在经历。在那里,我发现有一个命令转储,我可以通过该命令转储特定密钥,如下所示: redis> dump "myKey" bwood@mybox:~$ redis-cli --raw dump mykey | head -c-1 > myfile bwood@mybox:~$ cat myfile | redis-cli -x restore mynewkey 0

我想备份我的redis中具有多个密钥的特定密钥。我的redis有很多密钥,我不想对我的redis数据进行完全备份。我一直在经历。在那里,我发现有一个命令转储,我可以通过该命令转储特定密钥,如下所示:

 redis> dump "myKey"
bwood@mybox:~$ redis-cli --raw dump mykey | head -c-1 > myfile
bwood@mybox:~$ cat myfile | redis-cli -x restore mynewkey 0

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

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

如果您试图从命令行转储/恢复密钥(这是我发现这个问题时需要做的),Redis有一些不明显的怪癖。请参阅以获得更详细的解释

简单的回答是按如下方式转储/恢复:

 redis> dump "myKey"
bwood@mybox:~$ redis-cli --raw dump mykey | head -c-1 > myfile
bwood@mybox:~$ cat myfile | redis-cli -x restore mynewkey 0

跟进该职位:

bwood@mybox:~$ redis-cli --raw dump mykey | head -c-1 > myfile
bwood@mybox:~$ cat myfile | redis-cli -x restore mynewkey 0
如果这对您不起作用,您会得到一个错误,如:head:invalized byte count--1

然后在不使用head命令的情况下修改dump命令:

redis cli--原始转储mykey>myfile

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

这是我最后的两行:

 0561 7074 7572 6520 fa00 5be0 0526 015d
 7d06 00a7 afed c100 323d 400a 
我删除了“0a”并保存,恢复正常,例如

0561 7074 7572 6520 fa00 5be0 0526 015d
7d06 00a7 afed c100 323d 40

这可能有点离题,因为您要求备份和还原(可能会将该备份文件保存在某个位置),但这也可能是一个很好的提示:该命令负责在两台机器之间转储还原,而这是一个当前有限的命令。如果redis<3,则该密钥将从源实例中删除(这可能是一个小问题,因为您可以在迁移之前轻松备份源数据库,然后在迁移之后再次使用),而且我找不到支持目标数据库身份验证的选项。如果有人对获取所有密钥的批处理脚本感兴趣,请将其保存到文件
#!/bin/bash中$(redis cli KEYS\apikey*);do redis cli--raw dump mykey | head-c-1>dump/$each done
这些可用于以后使用Brendan Wood的上述脚本导入。这是一篇很好的文章,提供了更多详细信息: