Redis延迟队列与可靠消费实践概览典型实现:ZSET 时间调度 + List 工作队列;或直接使用 Redis Streams 消费组实现可靠处理。核心诉求:可重试、可追踪、幂等与可控并发。技术参数(已验证)ZSET 调度:使用分值为 UNIX 时间戳;定时轮询 `ZRANGEBYSCORE` 拉取到期任务并投递到工作队列;Lua 保证原子移动与防并发争抢。Streams 消费:`XADD` 生产、`XGROUP CREATE` 建组、`XREADGROUP` 拉取、`XACK` 确认;未确认消息位于 PEL(Pending Entries List),支持重试与转移。幂等保障:以业务唯一键在存储层去重;消费者侧使用去重表或布隆过滤器降低重复执行风险。可观测性:记录投递与确认的事件指标;跟踪滞留的 PEL 数量与重试次数,设定告警阈值。并发控制:使用限流(令牌桶/漏桶)与分片 Key 控制消费速率;避免热点队列阻塞。实战清单对可靠性要求高的场景优先使用 Streams 消费组;需要定时触发再叠加 ZSET 调度层。所有消费路径落实幂等键与重试策略;监控 PEL、失败原因与延时分布。用 Lua 封装原子搬移与状态标记;在运维层提供重试与死信处理工具。

发表评论 取消回复