博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ与Redis队列对比
阅读量:4885 次
发布时间:2019-06-11

本文共 1164 字,大约阅读时间需要 3 分钟。

 

本文仅针对RabbitMQ与Redis做队列应用时的情况进行对比

具体采用什么方式实现,还需要取决于系统的实际需求

简要介绍

RabbitMQ

RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

Redis

是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然它是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用。


具体对比

可靠消费

Redis:没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理

RabbitMQ:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费

可靠发布

Reids:不提供,需自行实现

RabbitMQ:具有发布确认功能,保证消息被发布到服务器

高可用

Redis:采用主从模式,读写分离,但是故障转移还没有非常完善的官方解决方案

RabbitMQ:集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作

持久化

Redis:将整个Redis实例持久化到磁盘

RabbitMQ:队列,消息,都可以选择是否持久化

消费者负载均衡

Redis:不提供,需自行实现

RabbitMQ:根据消费者情况,进行消息的均衡分发

队列监控

Redis:不提供,需自行实现

RabbitMQ:后台可以监控某个队列的所有信息,(内存,磁盘,消费者,生产者,速率等)

流量控制

Redis:不提供,需自行实现

RabbitMQ:服务器过载的情况,对生产者速率会进行限制,保证服务可靠性

出入队性能

对于RabbitMQ和Redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。

测试数据分为128Bytes、512Bytes、1K和10K四个不同大小的数据。
实验表明:
入队时,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受;
出队时,无论数据大小,Redis都表现出非常好的性能,而RabbitMQ的出队性能则远低于Redis。
注:此数据来源于互联网,但与我自己之前测试的数据基本吻合


应用场景分析

Redis:轻量级,高并发,延迟敏感

即时数据分析、秒杀计数器、缓存等

RabbitMQ:重量级,高并发,异步

批量数据异步处理、并行任务串行化,高负载任务的负载均衡等

 

 

缓存对比

转载于:https://www.cnblogs.com/rainy-shurun/p/5394334.html

你可能感兴趣的文章
ROS注册级别LEVEL0-6,原来使用GRE通道是不要钱滴
查看>>
【模板】矩阵快速幂
查看>>
解决JSONObject.fromObject数字为null时被转换为0
查看>>
python 的类变量和对象变量
查看>>
java中的三大特性
查看>>
RemoteExt 远程验证
查看>>
HDU 2204(容斥原理)
查看>>
删除文件到回收站rm命令
查看>>
[2013.10.11]饥饿的奶牛
查看>>
Struts2 漏洞系列之S2-001分析
查看>>
响应式网站的开发
查看>>
SQLite使用(二)&&数据类型
查看>>
tomcat 启动时设置 java 参数,mark
查看>>
Linux init 0-6 启动级别
查看>>
pyqt 实现进度条窗口
查看>>
数据库数据定期同步实现
查看>>
Web.config配置文件详解
查看>>
C++11标准发布
查看>>
转:C++模板学习
查看>>
C# 中 以 &# 打头的 编码 是: html 编码解码地址 转换
查看>>