一个简单的redis性能测试程序和性能测试结果
2016-07-25 17:02
525 查看
内存数据库中,redis性能是不错的了。对于它的性能测试,我们一般使用redis自带的工具benchmark进行。但有时用自带的测试,我们并不怎么觉得可靠,索性自己写个简单的程序,对比测一下。结果如下redis的性能如下:
经过简单的测试,和使用redis自带的测试工具benchmark的结果基本上是一致的,说明软件关于性能方面的说法,没有任何夸大之嫌。
COMMAND | TOTAL_NUM | PIPE_LINE | KEY_SIZE | VALUE_SIZE | RESULT |
LIST_TST | 500000 | 10 | 10 | 1000 | 26469/s |
LIST_TST | 500000 | 10 | 10 | 500 | 42811/s |
LIST_TST | 500000 | 10 | 10 | 200 | 74738/s |
LIST_TST | 500000 | 10 | 10 | 100 | 119617/s |
LIST_TST | 500000 | 10 | 10 | 50 | 152439/s |
LIST_TST | 500000 | 10 | 10 | 20 | 182481/s |
LIST_TST | 500000 | 10 | 10 | 10 | 191570/s |
LIST_TST | 500000 | 10 | 10 | 5 | 203252/s |
结论:从数据对比上看,随着Value长度的增大,List数据类型,执行效率下降,尤其是在200位以上下降明显。 | |||||
LIST_TST | 500000 | 10 | 1000 | 100 | 5022.0/s |
LIST_TST | 500000 | 10 | 500 | 100 | 35945/s |
LIST_TST | 500000 | 10 | 200 | 100 | 58823/s |
LIST_TST | 500000 | 10 | 100 | 100 | 81967/s |
LIST_TST | 500000 | 10 | 50 | 100 | 86058/s |
LIST_TST | 500000 | 10 | 20 | 100 | 98425/s |
LIST_TST | 500000 | 10 | 10 | 100 | 101419/s |
LIST_TST | 500000 | 10 | 5 | 100 | 118483/s |
结论:从数据对比上看,随着Key长度的增大,LIST数据类型,执行效率下降。尤其当KEY的长度达到500位时,下降明显,达到1000位时,对执行效率的影响几乎是灾难性的。 建议:Key的长度不大于100位. 下面是key的长度为10位时,关于pipeline对性能影响的测试数据。 | |||||
LIST_TST | 500000 | 100 | 10 | 100 | 152905/s |
LIST_TST | 500000 | 50 | 10 | 100 | 151515/s |
LIST_TST | 500000 | 20 | 10 | 100 | 128865/s |
LIST_TST | 500000 | 10 | 10 | 100 | 118764/s |
LIST_TST | 500000 | 5 | 10 | 100 | 91743/s |
结论:LIST_TST从数据对比上看,随着pipeline 中追加命令的增加,对于数据类型,执行效率明显提升。但在50以后,提升幅度变得有限。 | |||||
SET_TST | 500000 | 10 | 1000 | 100 | 4881.9/s |
SET_TST | 500000 | 10 | 500 | 100 | 35038/s |
SET_TST | 500000 | 10 | 200 | 100 | 56689/s |
SET_TST | 500000 | 10 | 100 | 100 | 82508/s |
SET_TST | 500000 | 10 | 50 | 100 | 96711/s |
SET_TST | 500000 | 10 | 20 | 100 | 110132/s |
SET_TST | 500000 | 10 | 10 | 100 | 111570/s |
SET_TST | 500000 | 10 | 5 | 100 | 117467/s |
SET数据和LIST在REDIS中存储方式几乎一样,所以当KEY的长度达到500位以上时,对执行效率的影响也几乎是灾难性的。 下面一组数据是当数据类型为STRING,key的长度保持在20的时候,Value长度对redis性能的影响。 | |||||
STR_TST | 500000 | 10 | 20 | 1000 | 6624.2/s |
STR_TST | 500000 | 10 | 20 | 500 | 44843/s |
STR_TST | 500000 | 10 | 20 | 200 | 74183/s |
STR_TST | 500000 | 10 | 20 | 100 | 82508/s |
STR_TST | 500000 | 10 | 20 | 50 | 96711/s |
STR_TST | 500000 | 10 | 20 | 20 | 110132/s |
STR_TST | 500000 | 10 | 20 | 10 | 111570/s |
STR_TST | 500000 | 10 | 20 | 5 | 117467/s |
结论:随着Value的增加,效率降低,当value的长度大于500时,效率一般,value的长度达到1000位时,几乎是灾难性的,效率很低。下面是一组关于pipeline数量对效率的影响数据。 | |||||
STR_TST | 500000 | 100 | 10 | 100 | 151515/s |
STR_TST | 500000 | 50 | 10 | 100 | 144927/s |
STR_TST | 500000 | 20 | 10 | 100 | 124069/s |
STR_TST | 500000 | 10 | 10 | 100 | 102040/s |
STR_TST | 500000 | 5 | 10 | 100 | 77881/s |
结论:STR_TST从数据对比上看,key的长度保持在10的时候,随着pipeline 中追加命令的增加,STRING数据类型,执行效率提升明显。 |
经过简单的测试,和使用redis自带的测试工具benchmark的结果基本上是一致的,说明软件关于性能方面的说法,没有任何夸大之嫌。
相关文章推荐
- Redis ZADD命令
- ZRANGEBYSCORE
- spring-session使用教程(一):redis共享session
- redis里能不能针对set数据的每个member设置过期时间?
- redis
- Redis Expire
- linux & windows 安装redis
- Redis TTL命令
- spring集成 JedisCluster 联接 redis3.0 集群
- Windows系统如何安装Redis?
- Redis 高级: Redis 集群cluster
- Redis 高级: Redis 双击热备之 keepalived
- Redis 高级: Redis 双击热备之 sentinel
- 基于Redis的分布式锁实现方式
- Java调用-Redis
- [置顶] 分布式缓存技术Redis 在windows上以服务方式启动
- redis安装(LINUX)
- session入Redis
- Windows下Redis的安装使用
- redis修改端口号