Redis 往返与原子性实验台

Pipeline 与事务边界推演器

把命令想成货物:Pipeline 是把货物装上同一辆车,事务是给卸货区加一道闸门,WATCH 则会在开闸前核对封条。装车更省往返,但不会凭空得到原子性。

这里不是性能压测。总时间只按“网络往返耗时 × 往返次数 + 每条命令固定 2 毫秒”计算,用来比较结构,不代表任何真实 Redis 实例。

6 条 同一批次内要写入 Redis 的命令数
80 毫秒 模拟客户端到 Redis 再返回的固定耗时

逐条发送,逐条等待

客户端:执行一条,等一次响应
独立
往返
客户端装货口Redis 卸货口

Pipeline 优化往返

它把多条命令攒成一批发送,核心收益是少等网络;这件事本身不承诺其他客户端不能插队。

MULTI/EXEC 不做回滚

队列里的某条命令在运行期报错,其他已经执行或仍可执行的命令不会因此恢复原状。

WATCH 负责发现冲突

被监视的键在 EXEC 前变化,事务会放弃提交。客户端要重新读取、重新判断并主动重试。

两个客户端抢最后一件库存

库存初始为 1。按“下一步”让两个客户端读、写、提交,看看只做批量发送和使用 WATCH 的结果为什么不同。

等待开始

客户端甲

尚未读取库存
本地值:—
1 版本 0

客户端乙

尚未读取库存
本地值:—