👌redis事务支持原子性,支持回滚?

👌redis事务保证原子性吗,支持回滚吗?

题目详细答案

不支持。

先来回顾两个命令:

MULTI:开启一个事务。之后的所有命令都会被放入一个队列中,直到EXEC命令执行。

EXEC:执行之前队列中的所有命令。

在MULTI和EXEC之间的命令会被放入一个队列中,直到EXEC命令执行时,这些命令才会按顺序执行。

在EXEC命令执行时,所有被MULTI命令包裹的命令会按顺序一次性执行。意味着在EXEC执行时,Redis会将所有命令作为一个整体进行处理。Redis保证单个命令的原子性,即每个命令在执行时是不可分割的。

但是,Redis事务并不完全等同于传统关系型数据库的事务。

如果在EXEC执行过程中某个命令失败(例如,命令语法错误),该命令会被跳过,但其他命令仍然会继续执行。这与关系型数据库的事务不同,后者通常会在某个命令失败时回滚整个事务。

Redis事务没有回滚机制。如果某个命令执行失败,已经执行的命令不会被撤销。

redis再执行lua脚本的时候,会封装为一个事务,不可中断;

 wechat
天生我才必有用