it编程 > 数据库 > Redis

如何使用redis的stream数据类型做消息队列

24人参与 2025-06-26 Redis

在redis5.0之前,如果想使用它作为简单的消息队列,最好的选择就是自身提供的pub/sub模式.它支持简单的发布/订阅模式,发布一个channel绑定一条消息,然后可以有多个消费者监听这个channel,每个消费者都能收到相同的消息。不支持持久化,不支持查询,不支持分组,不支持分片消费,也没有提供很好的监控手段(有简单的pubsub容器命令,可以看有哪些channel,订阅者数量等)。但是5.0之后,倘若我们人仍选择redis作为简单消息队列,就可以使用新的数据类型stream

stream数据类型介绍

数据类型基础说明

常用命令及详解

实际使用场景

可用作消息队列

可以作为事件总线

延迟队列/死信队列

实时数据流处理

重要说明

关于持久化和消息删除

读取的阻塞和非阻塞

插入的性能

results obtained: 结果:
		processed between 0 and 1 ms -> 74.11%
		processed between 1 and 2 ms -> 25.80%
		processed between 2 and 3 ms -> 0.06%
		processed between 3 and 4 ms -> 0.01%
		processed between 4 and 5 ms -> 0.02%
		因此,99.9%的请求的延迟<= 2毫秒,异常值仍然非常接近平均值。

消费者组

属于pel中的消息可以删除吗

pending状态的消息是可以被删除的,redis并没有设计未确认的消息不允许删除。如果采用xdel删除消息后,pending列表将仍然保留待消费消息的id,但是消息内容没有了。因此,在读取此类pel条目时,redis会返回一个空值。

一个stream的一个group多个consumer时如何消费的

1. 分区/竞争消费(work queue 模式)

2. pending 机制

3. 分布式环境下的存储

x. 如果要“广播”效果(每个消费者都收到同一条消息),需要每个消费者用不同的 group。或者都广播了,就使用pub/sub吧,,~~

观测流

更加详细stream的细节介绍,可以参考官网:https://redis.io/docs/latest/develop/data-types/streams

稍后我将具体介绍如何在代码中使用stream来作为消息队列。

到此这篇关于使用redis的stream数据类型做消息队列的文章就介绍到这了,更多相关redis消息队列内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

查询访问Redis特定数据库的客户端IP的操作指南

06-26

Redis出现中文乱码的问题及解决

06-27

Nginx网站服务详解

06-22

Ubuntu 22.04安装配置FTP服务器的详细教程

06-22

Redis中对大Key进行处理方式

06-22

一文浅析如何在Redis中实现缓存功能

06-22

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论