redis 导入导出数据(通过redis-cli)

针对工作中可能用到 将某台服务器中的redis数据 导出然后导入到新的服务器中,一种方法是redis-dump工具,但是 他需要安装ruby环境,安装环境的过程中还可能出现意想不到的错误。所以不得不选用其他方法了。一下 是几点思路 供参考。在此谢谢我的同事(yaoer)的帮忙。

1、数据导出,不用自己写,也不用第三方脚本,

echo "HGETALL xxx" | redis-cli -h localhost -p 6379

echo "HGETALL xxx" | redis-cli -h localhost -p 6379 >> wordlist.raw

2.这样得到的结果,你可以上到服务器上 查看 wordlist.raw文件

3.整理成输入需要的文件格式 

$f = 'xx.oo';
$lines = 0;
$inkey = 0;
$rawfile = 'xx.oo';
$hashkey = 'xx';
$buff = '';
$fp = fopen($rawfile,'w');
$fps = fopen($f,'r');
while($line= fgets($fps)){
 $inkey = !$inkey;
 if ($inkey){

$f = 'bayes_wordlist.raw';
$lines = 0;
$inkey = 0;
$rawfile = 'bayes_wordlist.3.raw';
$hashkey = 'bayes_wordlist';
$buff = '';
$fp = fopen($rawfile,'w');
$fps = fopen($f,'r');
while($line= fgets($fps)){
 $inkey = !$inkey;
 if ($inkey){
  $line = sprintf('"%s"',trim($line));
  $buff = "HSET $hashkey ".trim($line);
  }
 else
 {
  $buff .= ' "'.trim($line).'"';
  fwrite($fp,$buff."\r\n");
 }
}
  $buff = "HSET $hashkey ".trim($line);
 }
 else
 {
  $buff .= ' "'.trim($line).'"';
  fwrite($fp,$buff."\r\n");
 }
}

如果选择哪个库 要在首行写入 select x

4.利用redis-cli进行导入

echo `date` > pipe.log && cat xx.oo | redis-cli >> pipe.log && echo `date` >> pipe.log

5.加上了时间记录,和对导入结果进行纪录,真正执行导入的语句是
cat wordlist.raw | redis-cli,当然严谨些的话redis-cli后面还要加-h localhost -p 6379等参数。

ref:http://my.oschina.net/u/937153/blog/133526

### 导入与导出 Redis 数据的方法 对于希望在 Windows 环境下执行 Redis 数据导入和导出的操作,可以采用多种方式实现这一目标。下面介绍几种适用于 Windows 的方法。 #### 方法一:使用 `redis-cli` 工具 尽管 `redis-cli` 是 Linux 和 macOS 上常用的命令行工具,在 Windows 中同样可以通过官方提供的可移植版本来运行此工具[^1]。为了确保兼容性和稳定性,建议下载最新版的 Redis 可移植包并将其解压缩至本地磁盘上的指定文件夹内。之后可以在该路径下的 bin 文件夹找到 `redis-cli.exe` 应用程序。通过这个应用程序可以直接连接到远程或本机服务器,并利用其内置功能完数据备份工作: ```bash # 将数据库中的所有键保存为 dump.rdb 文件 ./redis-cli save ``` 需要注意的是,上述指令仅能创建 RDB 快照而无法直接转换其他格式;如果需要更灵活的数据处理,则需考虑额外安装第三方库支持。 #### 方法二:借助 RubyGems 安装 `redis-dump` 插件 另一种方案是在 Windows 平台上部署 Ruby 开发环境后,再依照说明文档指引安装名为 `redis-dump` 的 Gem 包以获取更多高级特性[^3]。具体步骤如下所示: 1. 下载并配置好 Ruby 运行时; 2. 执行以下命令加载插件: ```ruby gem install redis-dump -V ``` 功设置完毕以后便能够轻松地把在线状态下的记录序列化为 JSON 文档形式存储于外部介质之中以便后续迁移用途。 #### 方法三:运用专门设计用于跨平台操作的 Python 脚本 除了以上提到的技术栈之外,还有许多开源项目提供了基于 Python 编写的解决方案可供选择。例如 GitHub 上托管着一款叫做 `redistools` 的集合体就包含了大量实用的小工具可以帮助用户快速有效地管理集群资源以及实施批量任务自动化流程等复杂场景需求[^4]。这里给出一段简单的例子展示怎样调用其中一个子模块来进行增量同步作业: ```python from redistools import DumpLoadTool tool = DumpLoadTool() result = tool.dump_keys(pattern="*", output_file="./backup.json") print(f"Dumped {len(result)} keys.") ``` 综上所述,虽然原生并不完全针对 Windows 用户优化过的某些特性能带来一定局限性,但是凭借社区贡献的力量依然存在不少替代品值得尝试探索一番。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值