*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 手动删除。