美文网首页
redis的事务控制

redis的事务控制

作者: 鸿雁长飞鱼龙潜跃 | 来源:发表于2019-05-26 08:06 被阅读0次

redis的事务控制。

问个最简单的问题:redis有事务吗?

答:有。

再问个问题:redis事务能保证操作的原子性吗?

答:不能。

为什么不能保证原子性呢?

……

要搞清楚这个问题,需要先看redis事务命令。

multi:开始事务。

exec:执行事务(为什么不是提交事务啊)。执行过程中如果报错,不会回滚,后面的逻辑还会执行。

discard:丢弃事务(为什么不是回滚事务啊)。丢弃事务指的是,丢弃事务缓存队列中的所有指令。

看到了吧,是因为exec执行的过程中如果有异常,后面的操作还会继续执行。也就是说redis不会回滚。

redis为什么要这样设计呢?

redis为什么不支持回滚呢?

我们看看网友的观点,下面这段内容就是网上的观点,基本上代表了大部分人的观点。

Redis命令在事务中可能会执行失败,但是Redis事务不会回滚,而是继续会执行余下的命令。如果您有一个关系型数据库的知识,这对您来说可能会感到奇怪,因为关系型数据在这种情况下都是会回滚的。

Redis这样做,主要是因为:

第一点:执行就是要成功,之所以失败,那是程序性问题。只有当发生语法错误(这个问题在命令队列时无法检测到)了,Redis命令才会执行失败, 或对keys赋予了一个类型错误的数据:这意味着这些都是程序性错误,这类错误在开发的过程中就能够发现并解决掉,几乎不会出现在生产环境。

第二点:为了提高速度。由于不需要回滚,这使得Redis内部更加简单,而且运行速度更快。

对于第一点我有一个疑问:为什么都是程序性问题,也有可能是网络问题啊?难道也不考虑网络问题吗?还是说redis的命令不存在网络问题?

相关文章

  • redis的事务控制

    redis的事务控制。 问个最简单的问题:redis有事务吗? 答:有。 再问个问题:redis事务能保证操作的原...

  • redis事务

    MULTI, EXEC, DISCARD and WATCH 是Redis事务的基础。用来显式开启并控制一个事务,...

  • redis系列(十):事务

    redis有事务么? redis官方说是有事务的。但这个事务不是我们普遍理解的mysql事务。 redis的事务不...

  • 九、Redis 事务

    Redis 事务 Redis事务描述: Redis事务允许在单个步骤中执行一组命令。以下是Redis事务的两个属性...

  • Redis事务

    redis事务机制 Redis事务与传统关系型事务的比较

  • Redis事务

    转载自Redis之Redis事务 Redis事务的概念: Redis 事务的本质是一组命令的集合。事务支持一次执行...

  • redis中的事物、消息订阅、持久化

    Redis 中的事务 Redis支持简单的事务 Redis与 mysql事务的对比 注: rollback与dis...

  • Redis简单操作记录

    Redis事务 1.Redis事务本质:一组命令的集合,加入队列,然后执行,执行完事务结束。 redis事务: ①...

  • redis 常用指令

    Redis 的事务 Redis 的事务处理与 RDBMS 的事务有一些不同。首先 Redis 不支持事务的回滚机制...

  • Redis学习笔记:事务

    Redis学习笔记:事务 原文链接:Redis学习笔记:事务 一、事务的描述 和MySQL一样,Redis中也有事...

网友评论

      本文标题:redis的事务控制

      本文链接:https://www.haomeiwen.com/subject/owtxtctx.html