队列
是一种特殊的线性表,特殊之处在于它只允许在表的前端(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中文网
发表评论 取消回复