golang 压测redis 消息队列

wenfh2020 · · 2253 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

用 redis  的 list 数据结构作为轻量级的消息队列,对于小系统确实是小而美,可控能力强。

当然与kafka 和 rabbitmq 相比它还有很多缺陷,在服务进行生产和消费的时候,还需要加上部分逻辑进行处理。


自己写了点 golang 代码,压力测试 redis 列表的性能。

机器配置:双核,4G

测试数据:100w

压力测试源码(github


生产者,生产 100 w 条数据,平均,每秒能写 13817 条数据。

begin time: 2018-07-29 14:03:55.606

end    time: 2018-07-29 14:05:07.976

Produce message: 1000000

avg: 13817.860879118389

负载
代码片段

消费者,消费 100 w 条数据,平均每秒能读 9433  条数据左右。

begin time: 2018-07-29 14:46:11.166

end time: 2018-07-29 14:47:58.038

custom message: 1000000

avg: 9433

负载
代码片段

总结:

以上生产和消费测试都是独立测试的,生产数据和消费数据,能达到 1w 左右的并发;如果生产者和消费者同时进行工作,各自并发能力还要下降 20% 左右。

讲真,一般的小企业业务系统,真正核心的业务数据(非流水,行为记录等日志型数据),写并发能达到 1 w 的已经很厉害了,某些金融公司,几百万注册用户(活跃度不够),峰值写并发也只有几千而已。一般系统都应该是读操作多于写操作,当然具体情况应该具体分析^_^。

本文来自:简书

感谢作者:wenfh2020

查看原文:golang 压测redis 消息队列

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

2253 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传