首页 > 数据库 >学习笔记之Redis消息队列-基于Stream的消息队列

学习笔记之Redis消息队列-基于Stream的消息队列

时间:2023-09-13 23:33:19浏览次数:57  
标签:消费者 Stream 队列 Redis 消息 key ID

学习笔记之Redis消息队列-基于Stream的消息队列

Stream 是 Redis 5.0 引入的一种新数据类型,可以实现一个功能非常完善的消息队列。

其实只需要知道写入消息队列的命令和读取消息队列的命令就行了

写入消息队列:XADD

image-20230913212559964

读取消息队列的方式之一:XREAD

image-20230913212657437

在业务开发中,我们可以循环的调用XREAD阻塞方式来查询最新消息,从而实现持续监听队列的效果,伪代码如下:

image-20230913212734713

注意:当我们指定起始ID为$时,代表读取最新的消息,如果我们处理一条消息的过程中,又有超过1条以上的消息到达队列,则下次获取时也只能获取到最新的一条,会出现漏读消息的问题

Redis消息队列-基于Stream的消息队列-消费者组

消费者组就是把消费者分成一组

特点:

image-20230913212858517

也只需要知道命令就行:

创建消费者组:

image-20230913212942558

key:队列名称
groupName:消费者组名称
ID:起始ID标示,$代表队列中最后一个消息,0则代表队列中第一个消息
MKSTREAM:队列不存在时自动创建队列
其它常见命令:

XGROUP DESTORY key groupName

给指定的消费者组添加消费者

XGROUP CREATECONSUMER key groupname consumername

删除消费者组中的指定消费者

XGROUP DELCONSUMER key groupname consumername

从消费者组读取消息:

XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] [NOACK] STREAMS key [key ...] ID [ID ...]
  • group:消费组名称
  • consumer:消费者名称,如果消费者不存在,会自动创建一个消费者
  • count:本次查询的最大数量
  • BLOCK milliseconds:当没有消息时最长等待时间
  • NOACK:无需手动ACK,获取到消息后自动确认
  • STREAMS key:指定队列名称
  • ID:获取消息的起始ID:

标签:消费者,Stream,队列,Redis,消息,key,ID
From: https://www.cnblogs.com/ahui-blog/p/17701095.html

相关文章

  • Stream4Flow
    Aframeworkforthereal-timeIPflowdataanalysisbuiltonApacheSparkStreaming,amoderndistributedstreamprocessingsystem.Thisprojectisnolongermaintained⚠ProjectStream4Flowisnolongermaintainedastheusedframeworksareconstantlyev......
  • 深入研究消息队列05 各消息队列集群架构对比
    23RabbitMQ的集群架构集群构建数据可靠性身份认证资源鉴权可观测性......
  • Java有关队列的基本操作
    什么是队列?队列是一种线性数据结构,队列中的元素只能先进先出;队列的出口端叫做队头,入口端叫做队尾。队列的基本操作1.入队:只允许在队尾的位置放入元素,新元素的下一个位置将会成为新的队尾;publicvoidenQueue(intelement)throwsException{if((rea......
  • Redis7 10大数据类型(Redis列表)
    一、常用二、单key多value三、简单说明一个双端链表的结构,容量是2的32次方减1个元素,大概40多亿,主要功能有push/pop等,一般用在栈、队列、消息队列等场景。left、right都可以插入添加;如果键不存在,创建新的链表;如果键已存在,新增内容;如果值全移除,对应的键也就消失了。它的底层实......
  • ubuntu redis安装
    1.1更新仓库sudoaptupdate1.2使用apt从官方Ubuntu存储库来安装Redissudoapt-getinstallredis-server二、设置密码2.1打开Redis配置文件redis.confsudovi/etc/redis/redis.conf2.2找到#requirepassfoobared这一行,将注释符号#去掉,将后面修改成自己的密......
  • Redis哨兵模式详解
    目录Redis哨兵模式定义为什么需要Redis哨兵模式?Redis哨兵模式功能Redis哨兵模式原理Redis哨兵模式的优缺点 Redis哨兵模式定义Redis哨兵模式是是一个管理多个Redis实例的工具,它可以实现对Redis的监控、通知、自动故障转移,是Redis实现高可用的实现方案。 为什么需要Red......
  • Redis启动器项目RunRedisServer在github开源了
    Redis启动器项目RunRedisServer在github开源了,github最近访问有问题,今天在github上面也开源下。主要用来启动Redis程序加载对应的某个conf文件。github https://github.com/binghe021/RunRedisServer......
  • 架构分布式____Redis集群架构各种方案分析
    //1.主从复制架构图解摘自网上一位博友的图片//2.客户端分片//3.twemproxy架构//4.Redis3.0P2P模式 的集群//更多资料最全的Redis集群方案介绍http://mt.sohu.com/20160601/n452401108.shtml......
  • Java多线程____BlockingQueue阻塞队列使用
    packagecom.frame.base.thread;importjava.util.concurrent.BlockingQueue;importjava.util.concurrent.ArrayBlockingQueue;/***并发编程____阻塞队列*/publicclassBlockingQueueTest{ publicstaticvoidmain(String[]args)throwsInterruptedException{......
  • Xstream操作xml_The type org.xmlpull.v1.XmlPullParser cannot be resolved. It is i
    //1.再使用xstream解析xml时发现总是报错Thetypeorg.xmlpull.v1.XmlPullParsercannotberesolved.Itisindirectlyreferencedfromrequired.classfiles//从bug中可以看出 XmlPullParser这个类为找打xstream需要依赖这个类从网上搜了一下这个类看看属于哪个jar包发现......