由于项目需要,要查询一个数量巨大的键值对,数据量大约6亿。先是在内存中用hashmap,虽然速度很快,但数据量不到1亿就直接死机了,而且无法持久,每次重新加载,也不合理。于是就想到了redis。
测试方法:
1. 环境配置:
主机配置:
机器用途 | 配置 | 数量 |
---|---|---|
Redis服务器 | Xeon E5-2658@2.3Ghz/256G | 3 |
客户机 | Xeon E5-2658@2.3Ghz/256G | 1 |
网络为光纤万M网卡。
2. 测试准备:
三台服务器,每台服务器上安装一到两个Redis 3.0实例,分别测试每服务器一个或两个Redis的情况。
2.1 每服务器一个Redis的结果:
第一步,数据量2亿,用56线程并行插入数据,插入速度约50万每秒。
第二步,用56线程读取200万数据,速度约为52万条每秒
占用内存,三台服务器分别为5G,6G,和7G
2.2 每服务器两个Redis的结果:
第一步,数据量4亿,用112线程并行插入数据,耗时为618秒,插入速度约65万每秒。
第二步,用112线程读取2000万数据,耗时为28.6秒,速度约为70万条每秒。
内存消耗情况如下:
服务器 | 实例 | 内存 |
---|---|---|
Redis1 | 1 | 7.2G |
Redis1 | 2 | 7.7G |
Redis2 | 1 | 5.8G |
Redis2 | 2 | 5.9G |
Redis3 | 1 | 5.6G |
Redis3 | 2 | 5.8G |
3. 结论:
优化后Redis读取速度超过70万条,并且非常稳定,从千万级到亿级数据量,读写速度稳定可靠。