Home  >  Article  >  Database  >  Redis批量导入数据

Redis批量导入数据

WBOY
WBOYOriginal
2016-06-07 17:27:181680browse

做实验的时候需要把一个2.1亿条的key-value数据导入redis以提供快速的查询。

环境:

openstack上的一个8核CPU、16GB内存、110GB磁盘的虚拟机

Ubuntu 12.04 x64 Server系统

安装redis2.6.7

过程:

做实验的时候需要把一个2.1亿条的key-value数据导入redis以提供快速的查询。

安装、配置、启动redis之后,需要把数据导入到redis中。

尝试用jedis写客户端往redis中逐条插入数据的话,,速度很慢,一分钟插入几万条就谢天谢地了,2.1亿条得好几天(我猜redis每秒10万条的插入速度是批插的速度,而且是插入的比较短的数据)。

关于redis批插,查了一下,有的用了一个叫redis_import_tools的工具https://github.com/unbracketed/redis-import-tools

使用python写的,看了一下readme感觉有点麻烦,上面说是比redis自带的pipe line功能要快,我还就不信邪了,试试redis自己的pipe line到底能有多慢:

参考

这里写得很清楚了,自己生成一个redis protocol格式的数据文件即可。2.1亿条(9GB,其中纯数据不到4GB)的导入大概用了12分钟的样子,导入后redis-server进程差不多吃掉了90%的内存(总共16GB)。看来:

1、redis自己的pipe还是很强大的;

2、redis十分吃内存,物理内存最好是数据的4倍以上(而且是没有其他进程占用资源的情况下),否则就要设置系统的内存分配方式,使得redis可以使用虚拟内存,但查询速度可能会有所降低。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn