赞
踩
消息队列(Message Queue),从概念上来理解就是用来存放消息的队列,最简单的消息队列模型包括以下三个角色:
而Redis也为我们提供了三种不同的方式来实现消息队列:
这种方式比较简单,因为Redis的list数据结构是一个双向链表,很容易模拟出队列的效果。
队列是入口和出口不在一边,对此我们可以利用:
LPUSH
结合BRPOP
,或者RPUSH
结合BLPOP
来实现先进先出的效果
注
:这里使用BRPOP
而不是RPOP
是因为BRPOP
能够实现阻塞的效果而RPOP
不能
使用该方式实现消息队列的优缺点如下:
优点:
缺点:
PubSub(发布订阅),是Redis2.0版本引入的消息传递模型,消费者可以订阅一个或多个channel(频道),生产者向对应channel发送消息后,所有订阅者都能收到相关消息
它有以下命令:
SUBSCRIBE channel [channel]
:订阅一个或多个频道
PUBLISH channel msg
:向一个频道发送消息
PSUBSCRIBE pattern[pattern]
:订阅与pattern格式匹配的所有频道
具体操作如下所示:
该方式实现的消息队列支持多消费者的使用,但也存在着以下弊端:
Stream是Redis5.0引入的一种新数据类型,能够实现功能完善的消息队列,因为它本身就是一个消息队列,所以我们可以直接通过命令来使用它:
作用:发送消息
其中:
key:队列名称
[NOMKSTREAM]:如果队列不存在,是否自动创建队列,默认是自动创建
[MAXLEN|MINID [=|~] threshold [LIMIT count]]:设置消息队列的最大消息数量
*|ID:消息的唯一id,表示由Redis自动生成,格式是“时间戳-递增数字”,一般推荐使用来自动生成
field value [field value …]:发送到队列中的消息,以键值对的格式录入,可以多个同时录入
举个栗子 本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/1012478
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。