一尘不染

大量摄入Redis

redis

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

我的数据如下所示:

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

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

在我刚装箱的Redis实例中,并带有未压缩的纯文本文件(带有此数据),一分钟我可以得到大约一百万条记录。我需要做大约4,500万,这大约需要45分钟。45分钟太长。

我是否可以进行一些标准的性能调整来进行此类优化?通过在单独的实例之间分片,是否可以获得更好的性能?


阅读 261

收藏
2020-06-20

共1个答案

一尘不染

最快的方法如下:根据这些数据生成Redis协议。生成Redis协议的文档位于Redis.io网站上,这是一个简单的协议。一旦有了它,只需将其命名为appendonly.log并以仅追加模式启动redis。

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

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

减少骇人听闻的方式,只需使用流水线每次插入1000次即可。它几乎与生成协议一样快,但是更加干净:)

2020-06-20