大量摄入Redis

Don*_*ner 16 redis

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

我的数据如下:

771240491921 SOME;STRING;ABOUT;THIS;LENGTH
345928354912 SOME;STRING;ABOUT;THIS;LENGTH
Run Code Online (Sandbox Code Playgroud)

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

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

我是否存在一些标准的性能调整来进行这种类型的优化?通过分割不同的实例,我会获得更好的性能吗?

ant*_*rez 26

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

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

这将是超级快,没有RTT等待,它只是一个批量加载数据.

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

  • 对于此线程的未来读者,我想说我们使用了appendonly.log方法,并且能够在2分钟内(来自appendonly.log文件)加载4500万条记录. (9认同)