使用ruby进行redis大量插入的ram文件?

时间:2013-10-25 16:04:19

标签: ruby redis ram

我想将来自数据仓库的大量数据插入到redis中,并使用ruby。

redis-documentation我理解使用批处理命令的文件是正确的方法。

但是我不想获取所有数据,将其写在我的驱动器上(也就是写下批处理文件),只是为了可以进一步发送到redis。

有没有办法跳过这一步?我虽然 创建一些可以传递给redis的“memfile”,而存储在ram而不是硬盘上可能是一个答案,但我真的不知道这是否存在。

谢谢!

1 个答案:

答案 0 :(得分:1)

  1. 您的数据实际上是否足够大,并且您的速度要求实际上要求足够高,只是通过管道执行此操作的速度不够快?没错,批量处理整个事情,或者用Redis的协议重写它更快,但除非你的要求非常极端,否则不要浪费你的时间。我已经流水线插入了数百万的HSET,花了几秒钟。至少在浪费时间构建你可能不需要的东西之前先试试这个。
  2. 你真的需要在Ruby中这样做吗?如果您的要求确实如此极端以至于简单的管道不够快,请尝试从数据流管道到redis-cli --pipe。这看起来像:sh getDataFromServer.sh | redis-cli --pipe,并且不需要你将大文件写入磁盘(尽管如果你这样做会更快,因为上面的内容取决于你的网络速度)。
  3. TL; DR;不要做你不需要的优化。如果你可以通过流水线在可预见的未来逃脱,那样做。如果你在可预见的未来需要更快的速度,那就做足够了。 除非确实需要,否则不要编写Redis协议或将Redis写入磁盘。