本博客讲述如何使用redis中流stream的组
简言
1. 消费者组(consumer group)允许用户将一个流从逻辑上分成多个不同的流,并让消费者组组下的消费者去处理组中的消息
2. 多个消费者组可以共享同一个流中的元素;但同一个消费者组中的每条消息只能有一个消费者,即不同的消费者将独占组中不同的消息,当一个消费者读取了组中的一条消息后,其他消费者将无法读取这条消息
3. 就目前使用来看,一个流拥有一个消费者组是正常的,至于什么情况下需要使用多个消费者组还没发现,敬请指教
redis流stream使用系列文章
第一篇 redis 流 stream的使用总结 - 基础命令
第二篇 redis 流 stream的使用总结 - 如何遍历
这篇主要讲述的命令
8.1 XGROUP CREATE
8.2 XREADGROUP GROUP
8.3 XACK
8.4 XGROUP SETID
8.5 XGROUP DELCONSUMER
8.6 XGROUP DESTROY
8.7 XPENDING
8.8 XCLAIM
8.9 XINFO 查看流和消费者组的相关信息;XINFO GROUPS 打印消费者组的信息; XINFO STREAM
具体用法及示例
8.1 XGROUP CREATE
格式:XGROUP CREATE stream group start_id
注释:stream参数用于指定流的名字,group参数用于指定消费者组的名字,start_id参数用于指定元素的起始ID,决定了从流的哪个元素进行读取;0表读取所有消息;10000表读取大于10000的所有消息;$表读取流中大于所有ID的消息,即只读新消息
例如(在流s1中创建一个消费者组group1,该消费者组读取流中所有的消息):
注意:只能为已经存在的流创建消费者组,如果用户给定的流不存在,那么将返回一个错误
例如:流not-exists-stream不存在
8.2 XREADGROUP GROUP
格式:XREADGROUP GROUP group1 comsumer1 s1 0
8.3 XACK
8.4 XGROUP SETID
8.5 XGROUP DELCONSUMER
8.6 XGROUP DESTROY
格式:XGROUP DESTROY stream group
例如:第一次删除成功返回1;第二次流s2不存在报错;第三次group2不存在返回0;第四次因group1已被删除故不存在返回0
注意:为了保证程序的正确性,用户需保证在删除消费者组时,组中已经没有任何待处理消息