概述目标:以消费组实现并发消费与ACK确认,通过XPENDING与XCLAIM治理滞后与离线消费者,控制队列长度与保留。适用:事件处理、日志聚合、订单异步任务等。核心与实战创建流与消费组:XADD events MAXLEN ~ 1000000 * type BUY amount 10.5 XGROUP CREATE events workers $ MKSTREAM 拉取与确认:XREADGROUP GROUP workers worker-1 COUNT 50 BLOCK 5000 STREAMS events > -- 处理成功后: XACK events workers <message-id> 查看滞后与PEL:XPENDING events workers -- 返回消费者、最早未ACK时间与数量 重新分配未处理消息:XCLAIM events workers worker-2 60000 <message-id> 示例批量添加并观测:XADD events * type BUY amount 20.0 XLEN events 重置消费者:XGROUP DELCONSUMER events workers worker-1 验证与监控队列长度与保留:使用`MAXLEN ~`近似修剪避免无限增长;监控`XLEN`与内存使用。滞后治理:定期查询`XPENDING`与按空闲时间`XCLAIM`回收消息;记录处理时间分布。失败处理:将多次失败的消息转移到DLQ(单独的Stream或List)。常见误区不进行ACK导致PEL堆积;需在处理成功后立即`XACK`。使用精确`MAXLEN`频繁重写导致性能损失;应使用近似`~`修剪。盲目`XCLAIM`导致重复处理;需根据空闲阈值与消费者健康状态合理回收。结语通过消费组与滞后治理策略,Redis Streams可在高并发场景稳定处理事件流,并以修剪与DLQ控制成本与风险。

发表评论 取消回复