自定义Redis'RDB文件的目标

时间:2011-09-25 22:44:10

标签: redis

我想将Redis的RDB文件的目标自定义为已安装文件系统上的文件以外的其他目标。 例如:

  • 通过scp
  • 将文件发送到远程主机
  • 将文件上传到Hadoop HDFS(我在Hadoop集群上运行Redis,我们一直使用HDFS进行备份)
  • gzip该文件,然后将其移至某个存档位置

原因是我想归档RDB文件(我的数据每天都被刷新)。我不确定我将如何处理这些存档的RDB文件,但我想我以后可以从中获取一些值。

有没有办法在进行新转储时从Redis触发外部进程,以便我可以将RDB文件发送到目的地?我现在能提出的最复杂的事情是一个cron作业,它会检查文件是否需要在很短的时间内发送,但我宁愿让它被触发而不是不断轮询。

我对Redis很新,所以如果您认为我正在不正确地解决这个问题并建议一个新的解决方案,请随时纠正我。

2 个答案:

答案 0 :(得分:1)

也许我错过了一些东西,如果你这样做是为了保存将被清除的数据,为什么不安排它来scp它并在数据被刷新之前正确地进行gzip?想要它不能存在于普通文件系统中的原因是什么?据我所知,在写入RDB文件时无法从redis中触发外部进程。根据配置文件中的save设置,它可能会经常发生。请查看此文档以获取更多信息http://redis.io/topics/persistence

答案 1 :(得分:0)

可能我也想念,但是:

您可以在redis.conf中更改文件的位置

您可以设置移动/复制文件的crontab。

为获得最高安全性,请执行两个crontabs - 一个用于移动文件(mv data.rdb data1.rdb),另一个用于在5-10分钟后上传data1.rdb。原因是crontab可能与Redis保存过程同时启动。

因为主题很有趣,我可以做一个简单的脚本, 明天检查http://redis4you.com/articles.php