事务阶段
- 标记
- 入队
- 执行
常用命令
下表列出了 redis 事务的相关命令:
序号 | 命令及描述 |
---|---|
1 | DISCARD 取消事务,放弃执行事务块内的所有命令。 |
2 | EXEC 执行所有事务块内的命令。 |
3 | MULTI 标记一个事务块的开始。 |
4 | UNWATCH 取消 WATCH 命令对所有 key 的监视。 |
5 | WATCH key [key ...] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 |
事务的几种情况
- 正常情况
- 放弃事务:discard
- 全部失败: 有一些错误的命令(Redis里面根本没有的命令)。事务全部放弃。
- 错误命令失败:错误的使用一些命令(字符串加一),当前命令失败,事务中的其他命令成功。
- 使用Watch:见下一节
Watch
乐观锁:不加锁,使用版本号机制,当前修改必须大于版本号才能修改
Redis 锁的机制类似于乐观锁。在进行watch监控时,对watch的key进行加锁,当其他客户端或线程对其修改后,当前事务会返回失败。执行了exec,之前加的watch监控都被取消。
网友评论