消息队列终极解决方案——Stream(上)
在 Redis 5.0 Stream 没出来之前,消息队列的实现方式都有着各自的缺陷,例如:
- 发布订阅模式 PubSub,不能持久化也就无法可靠的保存消息,并且对于离线重连的客户端不能读取历史消息的缺陷;
- 列表实现消息队列的方式不能重复消费,一个消息消费完就会被删除;
- 有序集合消息队列的实现方式不能存储相同 value 的消息,并且不能阻塞读取消息。
并且以上三种方式在实现消息队列时,只能存储单 value 值,也就是如果你要存储一个对象的情况下,必须先序列化成 JSON 字符串,在读取之后还要反序列化成对象才行,这也给用户的使用带来的不便,基于以上问题,Redis 5.0 便推出了 Stream 类型也是此版本最重要的功能,用于完美地实现消息队列,它借鉴了 Kafka 的设计思路,它支持消息的持久化和消息轨迹的消费,支持 ack 确认消息的模式,让消息队列更加的稳定和可靠。
接下来我们先来了解 Stream 自身的一些特性,然后在综合 Stream 的特性,结合 Java 代码完整的实现一个完美的消息队列示例。
基础使用
Stream 既然是一个数据类型,那么和其他数据类型相似,它也有一些自己的操作方法,例如:
- xadd 添加消息;
- xlen 查询消息长度;
- xdel 根据消息 ID 删除消息;
- del 删除整个 Stream;
- xrange 读取区间消息
- xread 读取某个消息之后的消息。
具体使用如下所述。
添加消息
消息队列终极解决方案——Stream(上)相关推荐
- 消息队列终极解决方案——Stream(下)
在开始使用消息分组之前,我们必须手动创建分组才行,以下是几个和 Stream 分组有关的命令,我们先来学习一下它的使用. 消息分组命令 创建消费者群组 127.0.0.1:6379> xgrou ...
- 别再用 Redis List 实现消息队列了,Stream 专为队列而生
使用 Redis 的 List 实现消息队列有很多局限性,比如: 没有良好的 ACK 机制: 没有 ConsumerGroup 消费组概念: 消息堆积. List 是线性结构,想要查询指定数据需要遍历 ...
- springboot使用redis实现消息队列功能,redis使用list和stream实现消息队列功能,redis实现消息队列的风险点分析
文章目录 写在前面 基于list的消息队列解决方案 使用list基本实现消息队列 阻塞式消费,避免性能损失 替换while(true) 实现消息幂等 保证消息可靠性 基于stream的消息队列解决方案 ...
- redis灵魂拷问:如何使用stream实现消息队列
redis在很早之前就支持消息队列了,使用的是PUB/SUB功能来实现的.PUB/SUB有一个缺点就是消息不能持久化,如果redis发生宕机,或者客户端发生网络断开,历史消息就丢失了. redis5. ...
- Redis进阶-Stream多播的可持久化的消息队列
文章目录 Pre Stream简介 Stream特性 消息 ID 消息内容 命令预览 独立消费 创建消费组 消费 Stream 消息积压怎么处理 消息如果忘记 ACK 会怎样? PEL 如何避免消息丢 ...
- 基于消息队列的分布式事务解决方案
前两天发了工资,第一反应是想着要给远方的女朋友一点惊喜!于是打开了平安银行的APP给女朋友转点钱!填写上对方招商银行卡的卡号.开户名,一键转账!搞定!在我点击的那瞬间,就收到了app的账户变动的提醒, ...
- Redis 消息队列的三种方案(List、Streams、Pub/Sub)
现如今的互联网应用大都是采用 分布式系统架构 设计的,所以 消息队列 已经逐渐成为企业应用系统 内部通信 的核心手段,它具有 低耦合.可靠投递.广播.流量控制.最终一致性 等一系列功能. 当前使用较多 ...
- 计算发送延时与传播延迟_消息队列——延时消息应用解析及实践
简介:在大部分场景下业务系统如果只需要实现异步解耦.削峰填谷等能力,常规的普通消息就可以满足此类需求.除此之外,在某些特殊的业务场景中,普通消息类型存在无法满足需求的情况.这就需要消息队列服务本身支持 ...
- 实战干货:基于Redis6.0 部署迷你版本消息队列
点击关注公众号,实用技术文章及时了解 技术研究背景 由于目前的研发团队处于公司初创阶段,尚未有能成熟的运维体系,对于市面上常见的成熟MQ搭建维护能力不足,但是又希望能有一款轻量级的消息系统供研发团队的 ...
最新文章
- 开发者们的迷茫期,该怎么看破?
- python横向柱状图-python画柱状图--不同颜色并显示数值的方法
- Https 与 SSl证书 概要
- FreeBSD基本命令[转]
- CoreAnimation —— CAReplicatorLayer(拷贝图层)
- sql server 迁移 mysql_sql server 迁移到 mysql
- 数据--第23课 - 队列的优化实现
- 10 Love Quotes Touch Your Soul at First Sight
- word文档怎么批量解除锁定_解除锁定的word文档的方法
- font-family
- 秦九韶算法计算机实现
- web版Project简介
- html设置type选择器,css :first-of-type选择器实例讲解
- .net core Fleck WebSocket使用笔记
- 【今日CV 计算机视觉论文速览 第101期】Wed, 17 Apr 2019
- 计算机性能指标ppt,计算机网络—评价网络的性能指标知识讲解.ppt
- 平面设计中的网格系统pdf_【200421】平面设计必看书籍超越平凡的设计平面设计中的网格系统等|电子书资源免费分享...
- 入坑codewars
- 基于javaweb仓库理系统设计与实现进销存管理.rar(论文+毕业设计+源码+答辩PPT)
- 下载视频-you-get