*Redis XGROUP CREATECONSUMER 命令

XGROUP CREATECONSUMER 用于在指定的消费者组中创建一个新的消费者。


*语法

XGROUP CREATECONSUMER key groupname consumername

*参数说明

参数 类型 必填 说明
key String Stream 键名
groupname String 消费者组名称
consumername String 消费者名称

*返回值

  • 1:消费者创建成功
  • 0:消费者已存在(无需创建)

*时间复杂度

O(1)

*

*示例

*创建消费者

> XGROUP CREATE mystream mygroup $ MKSTREAM
OK
> XGROUP CREATECONSUMER mystream mygroup consumer1
(integer) 1
> XGROUP CREATECONSUMER mystream mygroup consumer1
(integer) 0

*查看消费者信息

> XINFO CONSUMERS mystream mygroup
1) 1) "name"
      2) "consumer1"
      3) "pending"
      4) (integer) 0
      5) "idle"
      6) (integer) 0

*创建多个消费者

> XGROUP CREATECONSUMER mystream mygroup worker-1
(integer) 1
> XGROUP CREATECONSUMER mystream mygroup worker-2
(integer) 1
> XGROUP CREATECONSUMER mystream mygroup worker-3
(integer) 1

*常见错误

错误 原因 解决
NOGROUP No such consumer group 消费者组不存在 先使用 XGROUP CREATE 创建消费者组
ERR wrong number of arguments 参数不足 确保传入 key、groupname 和 consumername

*最佳实践

  • 消费者名称建议使用有意义的标识,如主机名、进程 ID、业务角色等
  • 消费者无需显式创建,XREADGROUP 也会自动创建,但显式创建更可控
  • 长期不活跃的消费者可通过 XINFO CONSUMERS 监控,必要时清理

*FAQ

Q1: XGROUP CREATECONSUMER 和 XREADGROUP 自动创建消费者有什么区别? A: 效果相同,但显式创建更清晰可控,适合需要在消费前确认消费者存在的场景。

Q2: 消费者有数量限制吗? A: 没有硬性限制,但消费者过多会增加管理开销,建议合理规划。

Q3: 消费者创建后如果不消费消息,会被自动删除吗? A: 不会自动删除,需要使用 XGROUP DELCONSUMER 手动删除。