Redis Stream 作为队列的使用方式(含延迟队列延伸)
Redis Stream 作为队列的定位Redis 做「队列」常见几种方式: List(LPUSH/BRPOP):简单 FIFO,但一条消息只能被一个消费者取走,无法多实例负载均衡,也没有「未 ACK 可重新投递」的语义。 Pub/Sub:广播,消息不落盘,订阅者不在就丢消息,不适合任务队列。 Stream:消息持久化、支持消费者组、每条消息有唯一 ID、支持 XACK 与 PEL(Pending Entries List),可实现多消费者负载均衡与至少一次消费,适合作为「队列」使用。 下文先说明把 Redis Stream 当队列 的核心概念与 Spring 用法,再在延伸里讲 基于 ZSET + Stream 的延迟队列 实现要点。 Stream 核心概念与命令基本结构 Stream:一个 key 对应一条日志流,每条记录有一个 消息 ID(默认毫秒时间戳-序号,如 1739123456789-0)和多个 field-value 对(类似 hash)。 生产者:XADD stream * field1 value1 field2 value2,* 表...
