Rabbitmq和Redis的队列的比较

Rabbitmq

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

Redis

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

具体对比

可靠消费

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

可靠发布

redis:不提供,需自行提供。Rabbitmq:具有消息发布功能,保证消息被发布到服务器。

高可用

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

持久化

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

消费者负载均衡

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

队列监控

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

流量监控

redis:不提供,需自行实现。Rabbitmq:服务器过载的情况,对生产者速率会进行限制,保证服务可靠性。

出入队性能

对于Rabbitmq和redis的入队和出队操作,各执行100万次,每10万次记录一次执行时间。测试数据为128Bytes、512Bytes、1k和10k四个不同大小的数据。

注:此数据来源于互联网,部分数据有误,已修正

应用场景分析

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

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

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理