zoukankan      html  css  js  c++  java
  • [转]Redis作为消息队列与RabbitMQ的性能对比

    周末测试了一下RabbitMQ的性能,RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。个人认为,在互联网开发中,使用消息队列,更多的因为在高并发环境下,由于来不及同步处理,请求会发生堵塞,所以我们需要一个队列服务来进行异步的处理,在这种场景下,只要队列服务满足最基本的Push/Pop已经足够了。

    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语法来操作消息队列,只不过性能表现怎么样,还需要进一步测试。
  • 相关阅读:
    tensorflow2.0——tensorboard与预测代码相结合
    tensorflow2.0——tensorboard画图使用
    tensorflow2.0——手写数据集预测完整版
    tensorflow2.0——交叉熵损失应用
    tensorflow2.0——softmax函数
    tensorflow2.0——多层全连接模板
    python基础知识
    day31(模块和包)
    day26(模块 logging 高级用法、collection、random)
    day7 set集合
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318335.html
Copyright © 2011-2022 走看看