在redis中转储和恢复特定密钥的数据
我想备份我的redis中具有多个密钥的特定密钥。我的redis有很多密钥,我不想对我的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> 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的上述脚本导入。这是一篇很好的文章,提供了更多详细信息: