redis是支持事务的,它与传统的关系数据库中的事务有所不同。
1.原子性:
redis事务保证的是队列中的命令作为一个整体要么全部执行,要么全部不执行。但是,如果事务中的某个命令因为执行错误而失败,redis会继续执行事务中的其他命令,而不是回滚整个事务。
2. 无隔离级别:
Redis 事务中的命令在提交前不会被实际执行,因此不存在 事务 传统数据库中的事务隔离级别问题,如脏读、不可重复读或幻读。 事务
3. 命令队列:
当客户端发送 multi 命令后,所有随后的命令都会被放入一个 队列中,而不是立即执行。当 exec 命令被发送时,Redis 会尝试执行队列 中的所有命令。
4. 乐观锁:
Redis 使用 watch 命令来实现乐观锁机制。客户端可以监控一个 或多个键,如果在执行 exec 之前这些键的值被其他客户端改变,事务将不 会执行。
5. 自动放弃:
如果事务因为监控键被修改而不能执行,ex 事务 ec 命令将放弃当前 队列命令,返回 null。
6. discard 命令:
如果客户端在发送 multi 之后决定放弃事务,可以使用 事务 discard 命令来清空事务队列并退出事务状态。 事务 事务
7. 有限的回滚:
Redis 事务不支持命令级别的回滚。如果事务中的某个命令 事务 事务 失败,Redis 会停止执行后续命令,而不是回滚到事务开始前的状态。