GROUP g1 c1
: 指定了消费组名为g1
,消费者名为c1
。这意味着消费者c1
将作为消费组g1
的一部分来读取消息。COUNT 1
: 表示一次性最多读取1条消息。BLOCK 2000
: 如果当前没有可消费的消息,则命令会阻塞等待最多2000毫秒(即2秒),直到有新消息到达或者超时。STREAMS s1
: 指定要读取的 Stream 键名为s1
。>1
: 这是一个起始消息 ID,表示只读取消息 ID 大于1
的消息,也就是说,从 Stream 中最新的消息开始读取(不包括 ID 为1
的消息)。
所以这条命令的整体功能是:作为消费组 g1
中的消费者 c1
,阻塞等待最多2秒钟,尝试从 Stream 键 s1
中获取一条大于 ID 为 1
的最新消息,如果没有消息则等待指定的阻塞时间后返回空响应或者超时。如果有多条符合条件的消息,由于设置了 COUNT 1
,则只会返回最新的那一条消息。
命令 XREADGROUP GROUP g1 c1 COUNT 1 STREAMS s1 0
的各个部分含义如下:
GROUP g1 c1
: 指定了消费组的名称为g1
,以及消费者(consumer)的名称为c1
。这意味着将使用消费者c1
从消费组g1
中读取消息。COUNT 1
: 设置一次性最多读取1条消息。若 Stream 中有多个消息待消费,此参数限制只返回一条。STREAMS s1
: 指定要读取的 Stream 的键名,这里是s1
。0
: 这是一个特殊的 Stream ID,表示读取自从 ID 0 或更高级别的消息开始,这里的0
实际上意味着“从最新的消息开始读取”。因为在 Stream 中,数字越大的消息 ID 代表消息越新。
因此,整个命令的作用是:作为消费组 g1
中的消费者 c1
,非阻塞地从 Stream 键 s1
中读取最新的一条消息(消息 ID 不小于 0,实际上就是从最新的消息开始读取)。如果没有新的消息可供消费,则命令立即返回空回复。