Rabbit MQ 和 Redis 队列

RabbitMQ

RabbitMQ 是实现AMQP(高级消息队列协议)的消息中间件的一种,消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。

Redis

Redis是一个Key-Value的NoSQL数据库,开发维护很活跃,本身支持MQ功能,完全可以当一个轻量级的队列服务来使用。

下面进行具体对比:

可靠消费

Redis: 没有相应的机制保证消息的消费,当消费消费失败的时候,消息体丢失,需要手动处理。
RabbitMQ: 具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费。

可靠发布

Redis: 不提供,需要自行实现。
RabbitMQ: 具有发布确认功能,保证消费被发布到服务器。

高可用

Redis: 采用主从模式,读写分离,但是故障转移还没有非常完善的解决方案。
RabbitMQ: 集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作。

持久化

Redis:将整个Redis实例持久化到磁盘
RabbitMQ: 队列,消息,都可以选择是否持久化

消费者的负载均衡

Redis:不提供,需要自行实现。
RabbitMQ: 根据消费者情况,进行消息的均衡分发

队列监控

Redis: 不提供,需要自己实现。
RabbitMQ: 后台可以监控某个队列的所有信息(内存、磁盘、消费者、生产者、速率等)。

流量控制
Redis: 不提供,需要自己实现。
RabbitMQ: 服务器过载的情况,对生产者速率会进行限制,保证服务可靠性。

出入队性能
入队,当数据比较小时Redis的性能要高于RabbitMQ,而如果数据大小超过了10K,Redis则慢的无法忍受。
出队,Redis性能都远远高于RabbitMQ。

应用场景分析

Redis: 轻量级,高并发,延迟敏感。
即时数据分析、秒杀计数器、缓存等。

RabbitMQ: 重量级,高并发,异步。
批量数据异步处理、并行任务串行化、高负载任务的负载均衡。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值