Redis到底支不支持事务?半事务

时间:2024-11-03 08:27:00

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 会停止执行后续命令,而不是回滚到事务开始前的状态。

相关文章