Redis7系列:Redis Stream 全面解析

Redis消息队列——Redis Stream 文章目录消息队列为什么不使用Redis 发布订阅 (pub/sub) 来实现消息队列Stream消息队列相关命令:消费者组相关命令:Stream最简单的生产、消费模型Stream 优点/改进Stream 支持「阻塞式」拉取消息支持发布 / 订阅模式XADD key ID field value [field value ...]Stream 能保证消息不丢失,重新消费Stream 数据会写入到 RDB 和 AOF 做持久化消息堆积时,Stream的处理专业的消息队列 消息队列 “消息队列”是在消息的传输过程 阅读详情

在这里插入图片描述

1. 核心概念

Redis Stream 是 Redis 5.0 引入的持久化消息队列数据结构,具有以下特性:

  • 有序消息存储:基于时间戳的全局唯一消息ID(格式:<毫秒时间>-<序列号>)
  • 消费者组模式:支持多消费者协同处理消息
  • 数据持久化:依赖 Redis AOF/RDB 机制
  • 内存高效:底层使用紧凑的基数树(Radix Tree)存储

2. 核心命令语法

2.1 添加流信息

# 基本写入(自动生成ID)
XADD key [NOMKSTREAM] [MAXLEN | MINID [= | ~] threshold [LIMIT count]] * | id field value [field value ...]

参数解析:

  • key: Stream 的键名。
  • NOMKSTREAM**: 如果 Stream 不存在,不自动创建(默认会自动创建)。
  • MAXLEN*: 限制 Stream 的最大长度(删除旧消息)。
    • MAXLEN ~ threshold: 近似裁剪(性能优化,允许略微超过阈值)。
    • MAXLEN = threshold: 精确裁剪(严格限制长度)。
  • MINID: 删除 ID 小于 threshold 的消息(类似按时间裁剪)。
  • \*|ID:
    • *: 自动生成消息 ID(格式为 <timestamp>-<sequence>,如 1631234567890-0)。
    • 手动指定 ID(需大于已有最大 ID)。
  • field value: 消息的键值对(支持多个字段)。

示例:

# 创建my_stream流  自动生成消息ID
xadd my_stream * name zhangsan age 25

> xadd my_stream * name zhangsan age 25
"1741586247360-0"
>

2.2 获取流信息

# 从某一个消息ID开始等待消费消息
XREAD [COUNT count
Redis精通系列——Stream,2024我的Java路要怎么走 millisecondsTime指的是Redis节点服务器的本地时间,如果存在当前的毫秒时间戳比以前已经存在的数据的时间戳小的话(本地时间钟后跳),那么系统将会采用以前相同的毫秒创建新的ID。sequenceNumber指的是序列号,在相同的millisecondsTime毫秒下,序列号从0开始递增,序列号是64位长度,理论上在统一毫秒内生成的数据量无法到达这个级别,因此不用担心sequenceNumber会不够用。​。 阅读详情

相关推荐

Redisson 操作 Redis Stream 消息队列详解及实战案例

除了RabbitMQ,还有Redis Stream

m0_74808313的博客 3026

Redis精通系列——Stream

本文已收录于专栏 《Redis精通系列》 上千人点赞收藏,全套Redis学习资料,大厂必备技能! 目录 1、简介 2、Stream内部探索 2.1 Stream 结构 2.2 四个唯一 2.3 消息ID 2.4 消息内容 3、Stream指令 3.1 指令汇总 3.2 XADD 3.2 XTRIM 3.3 XDEL 3.4 XLEN 3.5 XRANGE 3.6 XREVRANGE 3.7 XREAD 3.8 XGROUP CREATE 3.9 XREADGROU..

Java框架、并发编程、分布式、微服务、Redis、HarmonyOS、中间件等技术 3334

Redis Stream深度解析:从核心原理到生产环境实战避坑指南

在实时数据处理的领域,消息队列和流处理平台是构建现代应用架构的核心组件。其基本原理在于通过生产者-消费者模型,实现数据的异步、解耦传输,确保系统的高可用与可扩展性。Redis Stream作为Redis 5.0引入的专用数据结构,其技术价值在于巧妙地将仅追加日志、严格有序的消息ID与原生消费者组模型融为一体,以极简的API提供了强大的流处理能力。这使得开发者能够轻松应对需要高吞吐、严格顺序、消息回溯及多消费者协同处理的场景,例如物联网设备数据采集、用户行为事件流和实时监控告警。本文聚焦于Redis Stre

weixin_34239169的博客 379

Qwen2.5-Omni实战:5分钟搞定多模态AI模型本地部署(含Thinker-Talker架构解析)

本文详细介绍了Qwen2.5-Omni多模态AI模型的本地部署流程,包括硬件配置、环境准备和实战应用开发。特别解析了其创新的Thinker-Talker架构,该架构通过TMRoPE位置编码实现跨模态同步处理,大幅提升多模态任务效率。5分钟即可完成部署,适合开发者快速实现文本、图像和音频的联合处理。

weixin_29085865的博客 172

linux基线检查、基线加固、安全漏扫、系统漏洞、centos7、文尾部附脚本

等保三级-CentOS Linux 7合规基线检查 风险分类:系统-等保三级-CentOS Linux 7合规基线检查 检测项说明: CentOS Linux 7合规基线检查,对标中国等保2.0第三级等级保护基本要求部分检查项目,仅供参考 检查项目 : 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换 加固建议: 1、执行`cat /etc/shadow | awk -F: '($2 == "" ) { print $1}' `, 查看空密码账户并处理; 2、

swindy博客 5626

用MFRC522+STM32打造智能门禁:从硬件选型到云端控制全流程

本文详细介绍了基于STM32微控制器和MFRC522射频模块构建智能门禁系统的完整流程。从硬件选型、电路设计、底层驱动开发,到系统软件架构与状态机设计,并最终实现通过ESP8266模块接入云端平台(如OneNET)进行远程控制和数据可视化。项目深入探讨了MFRC522的SPI通信、卡片操作流程、天线调试以及云端MQTT集成等关键技术,为嵌入式开发者提供了一个从本地感知到云端管控的物联网项目实战参考。

raspberrypi5的博客 743

AMEsim柱塞泵的建模学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、为什么要对柱塞泵进行仿真?二、Amesim中柱塞泵的模型1.amesim中自己的定排量五柱塞的斜盘柱塞泵2.压力、流量仿真总结 前言 最近在学习Amesim进行柱塞泵的仿真学习,顺便在这里记录我的学习过程,这是我的初衷 提示:以下是本篇文章正文内容,下面案例可供参考 一、为什么要对柱塞泵进行仿真? 柱塞泵是功能和动力学比较复杂的流体机械。而在实际实验中,往往没有条件或者需要对柱塞泵做一些优化,所以需要我们利用仿真...

innocent_cft的博客 8188

彩票预测的可能性与算法分析

彩票作为一种以随机数为基础的赌博形式,吸引了大量希望一夜暴富的参与者。尽管许多人希望通过某种方式预测彩票结果,以增加中奖几率,但彩票预测的可能性依然是一个充满争议和误解的话题。本文将探讨彩票是否能够预测的理论依据,分析可能的预测算法,并解释这些算法为何在实际应用中难以奏效。

m0_38012434的博客 2万+

离线安装PlutoSDR硬件支持包全攻略:没有MathWorks账号也能搞定MATLAB集成

本文详细介绍了在没有MathWorks账号和网络环境的情况下,如何离线安装PlutoSDR硬件支持包并实现MATLAB集成的完整解决方案。从驱动安装、设备识别到MATLAB支持包的离线部署,提供了全面的步骤指导和常见问题排查方法,特别适合高校实验室、军工单位等内网环境使用。

js777的博客 269

告别WSL!用AMD ROCm7在Windows上跑ComfyUI,我的幻x2025 AI Max+ 395体验与性能调优心得

本文详细介绍了在搭载AMD Ryzen AI Max+ 395处理器的幻x2025笔记本上,如何通过ROCm7在Windows原生环境下高效运行ComfyUI,并分享了一系列性能调优技巧和实战经验,帮助开发者摆脱WSL束缚,提升AI创作效率。

weixin_29102619的博客 1119

MuJoCo XLA (MJX) 强化学习人形机器人四足机器人入门教程(三)

MJX 是用 JAX 编写的 MuJoCo 实现,可以在 GPU/TPU 上进行大批量训练。在本笔记本中,我们将演示如何使用 MJX 训练 RL 策略。在开始大量 RL 工作负载之前,我们先从一个简单的示例开始!xml = """"""接下来,我们使用 MJX 将 MuJoCo 模型和数据放到 GPU 设备上。下面,我们将打印来自 MuJoCo 和 MJX 的 qpos。

2506_90492529的博客 2473

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Docker:颠覆开发与部署的革命性容器技术
下一篇: Redis7系列:设置开机自启
智_永无止境
博客等级 码龄10年 803粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智_永无止境

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值