Redis 作为消息队列与 RabbitMQ 的性能对比
Redis是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持list数据结构的操作,所以完全可以当做一个轻量级的队列服务来使用。
本文简单对比了Redis作为消息队列和RabbitMQ的性能表现情况。
测试环境
1. 硬件环境:在个人笔记本上测试,Server和Client使用同一台机器,硬件信息如下
Processor : Inter(R) Core(TM)2 Duo CPU P8400 @2.26GHz
RAM : 4.00GB
Operating System : 32-bit Ubuntu 10.10
2. 软件化境:RabbitMQ和Redis的Server启动都是用默认配置,客户端使用Java,JVM启动使用默认参数:
RabbitMQ Server 2.2.0
RabbitMQ Java Client 2.2.0
Redis 2.0 Stable
Jedis
对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。
入队性能对比
四种不同大小的数据入队性能对比(RPS):
测试结果:
可以看到对于入队操作,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis慢的无法忍受。
出队性能对比
四种不同大小的数据出队对比(PRS):
测试结果:
可以看到对于出队操作,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。
Redis入队和出队对比
针对Redis入队和出队对比(RPS):
测试数据:
不管数据大小,Redis的出队性能都表现的非常优秀,而入队性能在数据比较大时,慢的无法忍受。
RabbitMQ入队和出队对比
针对RabbitMQ的入队和出队对比(RPS):
测试数据:
不管数据大小,RabbitMQ的入队和出队性能都保持一个均衡的状态,但总体上,出队性能远低于入队性能。
总结
总体看来,Redis比较适合在Web场景下作为队列服务使用,但当数据比较大的时候,入队性能有些问题,也可能是我配置上不正确,所以还需要进一步研究。而RabbitMQ本身支持太多的协议,不适合在Web环境中使用。另外有一个MySQL的插件Q4M,可以使用SQL语法来操作消息队列,只不过性能表现怎么样,还需要进一步测试。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。