美文网首页
Redis事务(Transactions)

Redis事务(Transactions)

作者: EnchantF | 来源:发表于2019-07-31 11:04 被阅读0次

相关命令

  • multi 开启事务
  • exec 开启命令执行
  • discard 取消事务(事务队列会清空, 客户端退出事务状态)
  • watch 乐观锁
  • unwatch

用法

multi

开启事务后,后续所有的命令会添加到队列,不会立即执行,一旦调用exec,所有的命令才会被依次执行

事务中可能出现的错误

  • 执行exec前,命令可能无法入队

产生的原因:命令本身出错、参数不正确、内存问题等等
这种错误在客户端常见,一旦出错,客户端通常会取消事务

  • 执行exec后,对某些key的值操作不当

比如,对某个key的值(类型为String),进行list操作
注意:在redis2.6.5之后,一个命令发生错误,其他命令继续被执行

为什么redis不支持回滚?

  • 错误的命令语法或者某个key的值---类型错误,这是编程产生的结果,可以在开发时被检测到,而不必到生产环境
  • redis内部简化且速度快,因为不需要回滚

乐观锁(CAS——check-and-set)

实现方式:watch

在执行exec之前,如果有至少一个watched key被修改,整个事务取消,返回null表示事务失败

悲观锁setnx

SETNX lock.foo <current Unix time + lock timeout + 1>

处理死锁

  • 1.SETNX lock.foo尝试获得锁
  • 2.GET lock.foo判断锁是否过期,如果没有过期,则休眠一段时间,重复1
  • 3.GETSET lock.foo <current Unix timestamp + lock timeout + 1>

官网地址

相关文章

  • redis事务

    本文参考https://redis.io/topics/transactions redis事务里包括MULTI,...

  • Redis事务(Transactions)

    相关命令 multi 开启事务 exec 开启命令执行 discard 取消事务(事务队列会清空, 客户端退...

  • 4、Redis事务详细介绍(包含乐观锁)

    参考文档:事务(transactions)[http://www.redis.cn/topics/transact...

  • Oracle事务Transaction

    参考资料: Transactions 关于Oracle事务的总结 什么是事务? 事务(Transaction)是访...

  • npm模块 mongoose-transactions

    https://www.npmjs.com/package/mongoose-transactions 简介 事务...

  • MongoDB: 原子性和事务

    MongoDB: 原子性和事务 原文链接: Atomicity and Transactions 在MongoDB...

  • 长事务

    长事务(Long Lived Transactions),顾名思义,就是执行时间较长的事务。 对于长事务的问题,有...

  • 事务的分类

    从事务理论的角度来说,可以把事务分为以下几种类型: 扁平事务(Flat Transactions) 带有保存点的扁...

  • 探索NHibernate中的事务

    1.NHibernate中的事务(Transactions) 简单描述:要求ISession使用事务;做一些操作;...

  • TPS/QPS/RT的关系及计算

    1、定义 TPS:Transactions Per Second,意思是每秒事务数,具体事务的定义,都是人为的,可...

网友评论

      本文标题:Redis事务(Transactions)

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