设为首页 收藏本站
查看: 1356|回复: 0

[经验分享] Redis Primer(1)基于JedisPool的Redis hset并发性能测试

[复制链接]

尚未签到

发表于 2016-12-20 09:34:50 | 显示全部楼层 |阅读模式



Redis Primer(1)基于JedisPool的Redis hset并发性能测试

  • 作者:钟超(Poechant)
  • 邮箱:zhongchao.ustc#gmail.com
  • 博客:blog.csdn.net/poechant
  • 微博:weibo.com/lauginhom
  • 日期:2012年12月24日


  • Redis Server 与 Redis Client 位于同一台机器(从而排除带宽限制带来的影响);
  • Redis Server 版本:2.6.7;
  • Redis Client API:Jedis 2.1.0,使用 JedisPool(依赖包使用 commons-pool-1.5.3.jar);
1. 测试一:单线程客户端基于不同Key和Value长度
1.1. 测试内容

  • 不变量:


    • JedisPool 参数确定


      • minIdle = 0
      • maxIdle = 50
      • maxActive = 500

    • 测试 hset 操作
    • Field 长度为 32 bytes

  • 控制变量:


    • Key 长度;
    • Value 长度;

  • 测试内容:


    • 吞吐量(每秒访问次数)

1.2. 测试结果
Key 长度从 1 到 256 逐次 2 倍递增, Value 长度从 8 到 32768 逐次 4 倍递增。

  • 以 Key 长度为 X 轴绘制测试结果:
DSC0000.jpg

  • 以 Value 长度为 X 轴绘制测试结果:
DSC0001.jpg
1.3. 结论
Throughput 随 Key 长度变化不大(更大范围内的 Key 长度没有测试,因为一般情况下 Key 超过 256 字节的情况较少,请本人使用方式也符合该范围),但与 Value 长度相关性极大(范围较大,因本人的应用场景中 Value 值较大)。
1.4. 建议

  • 减少每个查询中的访问次数(优化查询,类似于 Database 中优化 SQL 语句);
  • 要尽可能的减小 Value。
测试二:单线程客户端基于不同连接池参数
2.1. 测试内容

  • 不变量:


    • 测试 hset 操作
    • Key 长度为 32 bytes
    • Field 长度为 32 bytes
    • Value 长度为 256 bytes

  • 控制变量


    • maxIdle
    • maxActive

  • 测试内容


    • 吞吐量(每秒访问次数)

2.2. 测试结果
maxActive 从 25 到 300 每次递增 25, maxIdle 从 50 到 450 每次递增 100。

  • 以 maxActive 长度为 X 轴绘制测试结果:
DSC0002.jpg

  • 以 maxIdle 长度为 X 轴绘制测试结果:
DSC0003.jpg
2.3. 结论
在目前的测试参数范围内,差别不大,或许需要进一步测试。从该测试结果看 maxIdle=25 且 maxActive=250 的 JedisPool 设置能够带来最大的 hset(32bits, 32bits, 256bits) 吞吐量。
2.4. 建议

  • 采用 maxIdle=25 且 maxActive=250 的 JedisPool 设置。
测试三:多线程客户端不同hset次数
3.1. 测试内容

  • 不变量:


    • 测试 hset 操作
    • Key 长度为 32 bytes
    • Field 长度为 32 btyes
    • Value 长度为 20480 bytes

  • 控制变量


    • hset 操作次数从 10000 到 1000000

  • 测试内容


    • 吞吐量(每秒访问次数)

2.3. 测试结果
hset 操作次数从 10000 到 5120 500
DSC0004.jpg
2.4. 结论与建议

  • 用多线程的客户端进行压力测试;
  • Redis 的并发性能相当不错,20KB 的数据(这已经相当大了)每秒可以写入 60000 多次,平均每秒 1200 MB,9600 Mb,约 9.6 Gb。
  • 如果测试小数据,应该能达到 100,000/s 以上的并发量
-
转载请注明来自(Poechant)的 CSDN 博客:http://blog.csdn.net/poechant,作者微博:weibo.com/lauginhom
-

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316806-1-1.html 上篇帖子: 美团在Redis上踩过的一些坑 下篇帖子: redis 事件处理机制及其它
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表