redis 流 stream的使用总结 - 消费者组

本博客讲述如何使用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 为消费者组设置新的最后递送消息ID

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 为消费者组设置新的最后递送消息ID

8.5 XGROUP DELCONSUMER 删除消费者

8.6 XGROUP DESTROY 删除消费者组,成功执行返回1,组不存在返回0,流不存在则报错

    格式:XGROUP DESTROY stream group

    例如:第一次删除成功返回1;第二次流s2不存在报错;第三次group2不存在返回0;第四次因group1已被删除故不存在返回0

    注意:为了保证程序的正确性,用户需保证在删除消费者组时,组中已经没有任何待处理消息

发布了105 篇原创文章 · 获赞 58 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/yzf279533105/article/details/104226529