Redis 事务使用注意事项
更新时间:2024-08-15
云数据库Redis 集群版和标准版均支持 Redis 事务(transaction)机制。您可以使用 MULTI,EXEC,DISCARD,WATCH,UNWATCH 命令来执行原子性的事务操作。
集群版事务相关命令限制
事务中涉及的 key 必须在同一个 slot 上
事务命令最终需要在 Redis 节点上被执行,为了保证原子性,集群版中 Proxy 会为执行事务的客户端关联一条到 server 的独占连接,这要求用户在事务中可以使用的命令对应的 key 需要落在一个 server 中,准确来说是落在一个分片中,但考虑到集群后续可能做扩缩,而扩缩是以 slot 为粒度进行的,因此当前落在一个分片中的 key ,在将来不一定会处于同一个分片,因此要求事务中使用的 key 需要保证落在同一个 slot 上。
如何保证多个 key 落在同一个分片?
请参考数据分片规则
部分命令不支持在事务中使用 以下几类命令不支持在事务中使用:
- 不包含 key 的命令,如 info、dbsize、flushall、发布订阅类命令等
- 不支持使用阻塞类命令,比如 blpop 等