Pipeline 与 Stream

返回 Redis

Pipeline

批量发命令,一次 RTT,非事务;某条失败需业务处理。

MULTI / EXEC

命令队列原子执行;无回滚;Cluster 需同 slot。

WATCH

乐观锁;EXEC 前 key 被改则失败。

Lua

单 key 或 Cluster 同 slot 多 key 原子;锁、限流、库存:

local stock = tonumber(redis.call('GET', KEYS[1]))
if stock < tonumber(ARGV[1]) then return -1 end
return redis.call('DECRBY', KEYS[1], ARGV[1])

Pub/Sub

fire-and-forget,不持久化;离线丢消息。适合:缓存失效广播、配置刷新。


Stream + 消费组

XADD orders * userId 1 amount 99.5
XGROUP CREATE orders grp1 0 MKSTREAM
XREADGROUP GROUP grp1 c1 COUNT 10 BLOCK 5000 STREAMS orders >
XACK orders grp1 <id>
XPENDING orders grp1 - + 10
XCLAIM ...
概念说明
PEL已投递未 ACK
消费者宕机XCLAIM 或巡检 pending
vs KafkaStream 轻量;高吞吐用 Kafka

相关