由于做性能测试,需要往redis中导出千万级的数据。得知redis-cli工具支持pipeline导入可以达到最佳性能。由于刚接触redis以及对文档的格式不是很了解,走了很多的弯路。
从官方文档(http://redis.io/topics/mass-insert)我们可以得知数据格式。
*3\r\n 命令起始,定义共3个输入参数 $3\r\n 下一个参数字节长度 SET\r\n 命令参数 $3\r\n 下一个参数字节长度 key\r\n 变量参数 $5\r\n 下一个参数字节长度 value\r\n 值参数 注意:此处的\r\n为换行符,不是输入的字符。在这里我耗了很长的时间。。。。英文不好没办法。
用记事本打开后,数据格式如下图所示:
这里我用JAVA代码,供大家参考:
/** * 格式化成输入字符串 * @param args * @return */ private String getString(String... args){ StringBuilder sb = new StringBuilder(); sb.append("*").append(args.length).append("\r\n"); for(String arg : args){ sb.append("$").append(arg.length()).append("\r\n"); sb.append(arg).append("\r\n"); } return sb.toString(); } public void initFile2(){ String file= "G:\\2.txt"; BufferedWriter w = null; StringBuilder sb = new StringBuilder(); try { w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8")); for(int i=10000000 ;i <= 10100000;i++){ if(i/30000 == 0){ w.flush(); } sb.setLength(0); sb.append(this.getString("hmset","usr"+i,"userid","usr"+i,"username","usrname"+i)); w.append(sb.toString()); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally{ try { w.flush(); w.close(); } catch (IOException e) { e.printStackTrace(); } } }
最后,将生成的文本使用 cat 2.txt | redis-cli --pipe ,导入的效率十分之高。本人在本本的虚拟机上,导入500万条个hashmap(7个KEY),花费43秒时间。
相关推荐
redis.tar-redis镜像,可直接导入系统使用
主要介绍了redis中使用redis-dump导出、导入、还原数据实例,本文直接给出操作命令,并给出注释加以说明,需要的朋友可以参考下
本篇文章主要介绍了如何高效地向Redis插入大量的数据,现在分享给大家,感兴趣的小伙伴们可以参考一下。
主要介绍了Redis中统计各种数据大小的方法,本文使用PHP实现统计Redis内存占用比较大的键,需要的朋友可以参考下
java实现对Redis数据的导入和导出,可以实现从这个服务器copy到另一台Redis服务器上。
主要介绍了Redis数据导入导出以及数据迁移的4种方法详解,需要的朋友可以参考下
Redis大数据量Key存储需求及解决方案.docx
docker redis镜像 用于在docker中导入redis的镜像 执行docker load -i redis.tar 即可完成导入操作
源文件格式key,value ==》 经过处理后*3$3set$3key$5value 使用方式LANG=C ./sample.awk test.csv | redis-cli --pipe -h 127.0.0.1 -p 6379
redis消息体的大小对性能的影响测试报告
导入或导出数据的文件名 -h string redis host (default "127.0.0.1") -p int redis port (default 6379) 导出 ./bin/redis_dump_mac dump -h 127.0.0.1 -p 6379 -a 'redis123123' -P 'pc_v1*' -f out1.json ...
Redis-PipeLine批量导入.docx
windows redis本地数据库,支持redis在windows本地运行
redis安装配置(redis安装包、导入包、工具类) 1:redis的安装包 2:redis需要导入的jar包 3:redis连接池工具类包 4:redis的配置文件
32、Redis 如何做大量数据插入? 33、为什么要做 Redis 分区? 34、你知道有哪些 Redis 分区实现方案? 35、Redis 分区有什么缺点? 36、Redis 持久化数据和缓存怎么做扩容? 37、分布式 Redis 是前期做还是后期规模...
导出和导入Redis的数据 多数据库切换与浏览 实时更新视图以显示最新的数据变化 使用Redis Desktop Manager有助于简化Redis数据库日常管理任务,提高开发效率,并且由于其可视化的特性,使得非技术背景的用户也能更...
redis可视化界面,最新版支持大数据量展示
python导入redis包模块,。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows 上安装 Redis安装Windows ...