队列

是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

消息队列

是在消息的传输过程中保存消息的容器。(redis教程)

redis中的消息队列

redis中可以使用自带的publish和subscribe命令完成“消息推送”和“消息拉取”功能,实现消息队列。但这种方式有一个缺陷就是,消费者必须一致在线,否则会出现消费遗漏。

消息队列 一般是采用一个独立的集群专门用于消息存储,可以存储在内存里 也可以直接存储在磁盘中。比如常见的:RabbitMQ、kafka、rocketMQ、ActiveMQ、zeromq等等,它们有不同的特性,以及采用了各种不同的实现,适用于各种场景的消息任务分发。但他们本质作用跟上面讲的单实例环境中java“队列”没什么两样:在消息的传输过程中保存消息的容器。只是这里转换到“分布式”环境中而已。

redis中的list(本质上是个双向链表)、zset(有序set)都可以用做“消息队列”的容器,稍加处理就可以实现一个高可用的“消息队列”。使用redis实现的“轻量化”“消息队列”有三大优势:

1、现在redis已经广泛运用于各大系统中,无需再次引入其他第三方框架和api。

2、并且redis是基于内存存储的,生产者和消费者的存取速度都非常快。

3、使用redis集群的的容量,可以通过添加实例进行扩展。

满足以上三点要求,就可以实现一个简单的“消息队列”了。

以上就是怎么理解redis消息队列的详细内容,转载自php中文网

点赞(285) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部