redis消息队列

redis系列

  • redis的发布订阅功能

  • redis消息队列

  • redis的pipeline

  • redis的scan操作

本文主要简述redis作为消息队列的利弊和场景。

消息中间件要素

消息模型

  • 传送模型(发布订阅or点对点)
    是基于topic的发布订阅还是点对点模型

  • 接收模型(推or拉)
    消息是由生产者推还是由消费者拉

消息投递可靠性

  • at-most-once(消息丢失)
    消息被投递0或者1次,消息可能被丢失

  • at-least-once(消息重复)
    消息可能被投递多次,直到收到ack,会造成消息重复。像rabbitmq开启消息持久化及ack机制,可以保证此投递策略,确保消息投递成功,但可能造成消息重复。

  • exactly-once(消息仅且投递一次)
    消息通过事务等机制保证对方能成功接收,而且不会重复接收

消息持久化

消费者是否可以接收离线时的消息

消息优先级

消息是否支持优先级

消息回溯

消息是否可以重复消费

redis做消息队列

传送模型 接收模型 投递模型 持久化 优先级 回溯
发布订阅 at-most-once 需要自己支持

点对点模式需要自己通过list的lpush和brpop来模拟实现。
优先级队列可以用zset来实现

参考

  • redis做消息队列

  • Redis 实现消息队列 MQ

  • [MQ]Redis和RabbitMQ的对比

  • RabbitMQ vs Redis as Message Brokers

  • 哈,又一款超级简单的队列(MQ)实现方案来了~

  • Kafka Clients (At-most-once, At-least-once, Exactly-once, and Avro Client)

  • Message Delivery Reliability

  • 你真的很熟分布式和事务吗?

你可能感兴趣的:(mq,redis)