一、命令介绍
·事务生命周期控制
·MULTI:标记事务开始,后续命令进入排队状态。
·EXEC:一次性提交并顺序执行事务队列中的所有命令(执行期间不会被其他客户端请求打断)。
·DISCARD:放弃事务,清空已排队的命令。
·乐观锁并发控制
·WATCH:在事务开始前监控一个或多个键,若被监控的键在 EXEC 前被其他客户端修改,则事务自动中止(返回 nil),以此实现 CAS(Compare-And-Swap)乐观锁机制。
·UNWATCH:取消当前连接上所有键的监控。
注意:说明:
注意:与关系型数据库不同,Redis/Valkey 的事务不提供回滚能力。它的原子性仅体现在执行阶段:事务中的命令会打包后一次性执行,执行期间不会被其他客户端的请求打断。如果某条命令执行出错,后续命令仍会继续执行,已执行的操作也不会被撤销。
更多信息请参见 Valkey 产品文档:Transactions 命令组。
二、命令支持概览
·全部5个命令(discard、exec、multi、unwatch、watch)在 Redis 2.8 标准架构及4.0、5.0、6.2、7.0版本、Valkey 8.0、9.0的标准架构与集群架构中均完全支持。
·跨 Slot 限制:Transactions 族命令不存在跨 Slot 访问场景。
三、命令兼容性矩阵
Transactions 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
| 命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Redis 7.0/Valkey 8.0标准架构 | Redis 7.0/Valkey 8.0集群架构 | Redis 6.2标准架构 | Redis 6.2集群架构 | Redis 5.0标准架构 | Redis 5.0集群架构 | Redis 4.0标准架构 | Redis 4.0集群架构 | Redis 2.8标准架构 | 集群架构跨 Slot 支持 |
| discard | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| exec | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| multi | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| unwatch | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
| watch | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |