为什么 Redis 中的事物很玄学,没人使用 ?

1.为什么不使用 Redis 中的事物 ?

        Redis 中的事物是 "弱事物",它在操作的时候,是将多个命令全部加入到事物队列中,然后通过 exec 命令一次性执行所有命令。这样做的好处是可以减少网络往返的次数,提高效率。

它的使用示例如下:

为什么 Redis 中的事物很玄学,没人使用 ?_第1张图片

Redis 操作事物的命令有以下几个 :

  1. MULTI (开启事务):类似于 MySQL 8.0 之后的 begin;
  2. EXEC(提交事务):用于提交事务,它会执行事物队列中的所有命令。执行过程中,任何一条命令出错,按理来说是需要进行回滚的(但是 Redis 的事物很玄学)。
  3. DISCARD(回滚事务):用于取消一个事物,清空事物队列中所有的命令。

为什么说 Redis 中的事物很玄学,没人使用 ?

示例一:事物中进行嵌套事务

为什么 Redis 中的事物很玄学,没人使用 ?_第2张图片

        从上图可以看出来,Redis 中的事物,在执行过程中出错了,提交事物的时候,并没有进行回滚,而是正常提交了。接下来再来看一个示例>

示例二:事物执行过程中写错命令

为什么 Redis 中的事物很玄学,没人使用 ?_第3张图片

刚才明明是事物执行中报错也提交了事物,为啥这次事物执行中报错却取消事物了呢 ? 所以说 Redis 中的事物很玄学,没人使用。并且 Redis 中的事物也没有像 MySQL 那样设置隔离级别,它没有隔离性可言,在 Redis 事物执行期间,其他客户端的读写操作仍然可以进行。

你可能感兴趣的:(redis,java,开发语言)