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博客搜索:标题关键字。以获取最新全部资料 ❤
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤