Redis实现消息队列有3中方式

LIST消息队列

List数据类型的入口、出口不一致。可以保证有序性

常用命令

  • LPUSH与RPOP 或 RPUSH与LPOP是非阻塞式队列
  • LPUSH与BRPOP 或 RPUSH与BLPOP是阻塞式队列

缺点:无法避免消息丢失(拿到消息后,消息就在队列删除了,如果宕机,消息相当于没了)、只支持1个消费者(不像广播模式,多个消费者支持消费)

Pub/Sub模式

Redis2.0引入的功能,一个发布,全体订阅得到通知

常用命令

  • SUBSCRIBE channel:订阅一个或多个频道
  • PUBLISH channel msg:向一个频道发送消息
  • PSUBSCRIBE pattern:订阅通配符的频道

缺点:无法持久化、无法避免消息丢失、(消费者自己来不及处理所有就会堆积)消息堆积有上限

Stream 新的数据类型

Stream是Redis5.0引入的。如果对业务有超高精确性,还是考虑专业的MQ吧。Stream只有消费确认机制,没有生产者确认机制。一旦生产者发送消息,但是没确认,业务相当于就有问题了!

XGROUP

XADD

自己参考吧:https://www.bilibili.com/video/BV1cr4y1671t?p=77&share_source=copy_web&vd_source=164fe0eebbe1de2dc8ea1db9b173c783

本身Redis就不适合做消息队列,放弃了!命令极其复杂!

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤