大量摄入Redis

时间:2011-09-21 18:47:02

标签: redis

我正在尝试尽快将大量数据加载到Redis中。

我的数据如下:

771240491921 SOME;STRING;ABOUT;THIS;LENGTH
345928354912 SOME;STRING;ABOUT;THIS;LENGTH

左边有一个~12位数字,右边有一个可变长度字符串。键将是左侧的数字,数据将是右侧的字符串。

在我刚刚开箱即用的Redis实例中,使用带有此数据的未压缩纯文本文件,我可以在一分钟内获得大约一百万条记录。我需要做大约4500万,这需要大约45分钟。 45分钟太长了。

我是否有一些标准的性能调整可供我进行此类优化?通过分割不同的实例,我会获得更好的性能吗?

2 个答案:

答案 0 :(得分:26)

执行此操作的最快方法如下:从此数据中生成Redis协议。生成Redis协议的文档位于Redis.io站点上,它是一个简单的协议。完成后,只需将其命名为appendonly.log并以仅附加模式启动redis。

您甚至可以执行FLUSHALL命令,最后使用netcat将数据推送到服务器,将输出重定向到/ dev / null。

这将超级快,没有等待的RTT,它只是大量的数据加载。

不那么hackish的方式,每次使用流水线插入1000个东西。 它几乎与生成协议一样快,但更干净:)

答案 1 :(得分:2)

我喜欢萨尔瓦多提出的建议,但在这里你是一个非常明确的方式 - 为cli生成feed,例如

SET xxx yyy
SET xxx yyy
SET xxx yyy

将它传输到靠近你的服务器上的cli。然后执行保存,关闭并将数据文件移动到目标服务器。