mq:redis 和 rabbitmq 的区别
25 August 2018

参考: RabbitMQ 与 Redis 队列对比

首先,redis 有两种方式作为消息队列,list,zset 和 pub/sub

  1. 可靠消费
    rabbitmq:具有消息消费确认,即使消费者消费失败,也会自动使消息体返回原队列,同时可全程持久化,保证消息体被正确消费
    redis:需要自己实现(将 queue 里面 pop 出来的消息存到另外一个备份队列里面)
  2. 可靠发布
    rabbitmq:有发布确认机制和事务机制
    redis: 可以看 pub/sub,push 的结果
  3. 高可用
    rabbitmq:有集群
    redis:有主从
  4. 持久化
    rabbitmq:队列持久化,消息持久化
    redis:整个 redis 实例的持久化
  5. 消费者负载均衡
    rabbitmq:很容易支持,开多个 consumer 来消费队列就行
    redis:需要自己实现
  6. 流量控制
    rabbitmq:默认支持(有个流量链,下流的流量速率不能高于上游)
    redis:不支持,要自己实现
  7. 性能
    redis 比 rabbitmq 高
  8. 超时队列
    rabbitmq:通过 dead queue 实现
    redis:通过 zset(以时间戳为 score),或者通过 keyspace notification 实现