用于使用红宝石进行 Redis 批量插入的 RAM 文件



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

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

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

有没有办法跳过这一步?我虽然创建一些可以传递给 Redis 的"memfile",同时存储在 RAM 而不是硬盘驱动器上可能是一个答案,但我真的不知道这是否存在。

谢谢!

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

博士;不要做不需要的优化。如果你能在可预见的未来只靠流水线逃脱,那就去做吧。如果您在可预见的未来需要稍微提高速度,请为此做足够的事情。除非确实需要,否则不要编写 Redis 协议或将 Redis 写入磁盘。

最新更新