异步导入导出Redis数据(利用Hiredis、Libevent)
2014-03-26 21:36
260 查看
最近工作中需要用到一个将数据从Redis导出到文本(或从文本导入Redis)的工具。找到一个用Ruby写的开源软件redis-dump(http://delanotes.com/redis-dump/)。
利用上面的命令向Redis中set了100万条1K大小数据,本地测试下redis-dump的性能,QPS大约在2500左右,实在太慢,只好自己实现一个小工具。
看了看源码,redis-dump采用同步方式获取数据,无法充分利用Redis Server的性能。能想到的改进自然是异步的获取数据,hiredis的异步接口要和libevent、libev等异步通信库结合起来使用,这里有几个例子(https://github.com/redis/hiredis/tree/master/examples)。代码很简单,首先KEYS *获取所有的key,再将所有的DUMP key命令写入redisAsyncCommand交由event_base分发,在callback中将DUMP出的二进制数据处理一下和KEY值一起写入文本。
测试了一下,本地异步导入、导出的QPS达到了10万,整整是redis-dump的40倍。
redis-benchmark -t set -d 1000 -n 1000000 -r 50000000 -h xxx.xxx.xxx.xxx -p 6379
利用上面的命令向Redis中set了100万条1K大小数据,本地测试下redis-dump的性能,QPS大约在2500左右,实在太慢,只好自己实现一个小工具。
看了看源码,redis-dump采用同步方式获取数据,无法充分利用Redis Server的性能。能想到的改进自然是异步的获取数据,hiredis的异步接口要和libevent、libev等异步通信库结合起来使用,这里有几个例子(https://github.com/redis/hiredis/tree/master/examples)。代码很简单,首先KEYS *获取所有的key,再将所有的DUMP key命令写入redisAsyncCommand交由event_base分发,在callback中将DUMP出的二进制数据处理一下和KEY值一起写入文本。
测试了一下,本地异步导入、导出的QPS达到了10万,整整是redis-dump的40倍。
相关文章推荐
- 利用Python进行数据分析——数据导入导出
- 利用sqoop将hive数据导入导出数据到mysql
- 利用PL/SQL从Oracle数据库导出和导入数据
- 利用sqoop将hive数据导入导出数据到mysql
- 利用sqoop将hive数据导入导出数据到mysql
- 利用通用权限管理系统底层解决数据从不同库的导入导出问题
- Redis数据导出导入-redis-dump and redis-load
- 利用TOAD实现EXCEL数据在oracle的导入导出
- 利用SQL Server的DTS操作EXCEL、Access等数据表的导入导出
- mysql数据导入到redis,redis数据导出到文件备份
- 利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
- 利用Oracle数据泵完成数据导入和导出
- 利用sqoop将hive数据导入导出数据到mysql
- 利用Sybase Central 导出与导入表内数据
- 利用sqoop完成数据导入导出
- redis数据批量导入导出
- Redis 数据导入导出,redis-dump命令
- redis-dump-load数据导出导入备份工具使用介绍
- 2,利用mysql Workbench图形化工具管理mysql,导入与导出数据
- 利用PL/SQL从Oracle数据库导出数据和导入数据