简介
本文介绍RabbitMQ与Redis的区别。
对比
项 | RabbitMQ | Redis |
相近项 | ||
高可用 | 集群采用磁盘、内存节点,任意单点故障都不会影响整个队列的操作。 | 集群模式可实现高可用。 |
Redis占优势的项 | ||
出入队性能 | 稍弱。 | 强。 |
RabbitMQ占优势的项 | ||
可靠性 | 能保证可靠消费与可靠发布。 具有消息消费确认。即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费。 具有发布确认功能,保证消息被发布到服务器。 | 不能保证可靠消费,不能保证可靠发布。 没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理。发布也是如此。 |
消费负载均衡 | 支持负载均衡。 Rabbitmq队列可以被多个消费者同时监控消费,但是每一条消息只能被消费一次,由于Rabbitmq的消费确认机制,因此它能够根据消费者的消费能力而调整它的负载 | 不支持负载均衡。 Redis发布订阅模式,一个队列可以被多个消费者同时订阅,当有消息到达时,会将该消息依次发送给每个订阅者,她是一种消息的广播形式,Redis本身不做消费者的负载均衡,因此消费效率存在瓶颈。 |
持久化 | 灵活度大。 每条消息都可以选择性持久化,持久化粒度更小,更灵活。 | 灵活度小。 Redis的持久化是针对于整个redis缓存的内容,它有RDB和AOF两种持久化方式。 |
队列监控 | 支持后台监控。 Rabbitmq实现了后台监控平台,可以在该平台上看到所有创建的队列的详细情况,良好的后台管理平台可以方面我们更好的使用。 | 没有监控平台。 |
流量控制 | 支持流量控制。 服务器过载的情况,对生产者速率会进行限制,保证服务可靠性。 | 不支持流量控制。 需自行实现。 |
出入队性能对比