2

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

redis文档中我了解到,使用批处理命令的文件是正确的方法。

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

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

谢谢 !

4

1 回答 1

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

TL;博士; 不要做你不需要的优化。如果您可以在可预见的未来通过流水线摆脱困境,那就这样做吧。如果您在可预见的未来需要稍微提高速度,那么就做到这一点就够了。除非您确实需要,否则不要编写 Redis 协议或将 Redis 写入磁盘。

于 2013-10-28T19:54:47.060 回答