redis事物定义:

  》Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

  》Redis事务的主要作用就是串联多个命令防止别的命令插队。(redis单线程的,所以不会线程抢占的情况)

  命令队列

  multi 、exec 、discard

  》multi命令开始,后面的命令都会放入命令队列(quenen),但是不会执行,直到执行exec命令,才会顺序执行命令队列中的命令。

  》如果想放弃组队,通过discard命令来通知redis.

事物的错误处理有两种:

  》第一种命令组队时,报错。在执行时,整租所有的命令都会被取消。

  》第二种是组队时不报错,执行时个别命令出错。则只有报错的命令不会执行,而其他命令正常执行,且不回滚

WATCH key [key ...]

  》在执行multi之前,先执行watch key.监视一个(或多个)key,如果执行事务之前,key被其他命令改了,那么该事务不能执行。

UNWATCH key

  》取消监视

  注意:如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行 UNWATCH 了

两种锁机制:

  》悲观锁:当一开始操作(读取、更改)数据时,就锁住该数据不让其他人操作,直到自己不再操作,才会释放锁。

  》乐观锁:操作数据时,不会锁住资源,这样并发性好,但是会有一个版本号,当更新时,也会更新版本号。其他人会与版本号做对比,以确保读到的是最新的数据。

 redis事务的三特性

  》单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

  》没有隔离级别的概念:队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这个 让人万分头痛的问题 。

  》不保证原子性 :Redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚 。

Redis事物的更多相关文章

  1. Redis 事物

    MULTI . EXEC . DISCARD 和 WATCH 是 Redis 事务的基础. Multi 和 Exec Multi:开启一个事务,它总是返回 OK .执行之后, 客户端可以继续向服务器发 ...

  2. Redis事物及锁的运用

    redis与mysql事物比较如下: 下面是一个redis事物运用于买票的demo

  3. Redis 事物、悲观、乐观锁 (详细)

    1,概论 事物这东西相信大家都不陌生吧,在学习Spring,Mybatis等框架中, 只要是涉及到数据存储和修改的,都会有事物的存在, 废话就不多说了下面我们来简单的介绍下Redis事物以及锁. 2, ...

  4. SpringBoot进阶教程(二十八)整合Redis事物

    Redis默认情况下,事务支持被禁用,必须通过设置setEnableTransactionSupport(true)为使用中的每个redistplate显式启用.这样做会强制将当前重新连接绑定到触发m ...

  5. Redis - 事物控制和发布订阅

    multi命令后续命令将进入队列,不会马上执行,当执行exec后,一次输出所有结果 事物回滚使用discard命令,放弃之前的输入执行. SUBSCRIBE/PUBLISH SUBSCRIBE KEY ...

  6. 使用redis事物解决stringRedisTemplate.setIfAbsent()并设置过期时间遇到的问题

    spring-date-redis版本:1.6.2场景:在使用setIfAbsent(key,value)时,想对key设置一个过期时间,同时需要用到setIfAbsent的返回值来指定之后的流程,所 ...

  7. Redis常用数据类型和事物以及并发

    Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...

  8. Redis发布订阅和事物笔记

    Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 cha ...

  9. Redis的事物

    Redis的事物 Redis 事物常用命令 multi标记一个事物块的开始   exec:执行所有事物块内的命令   discard: 取消事物,放弃执行事物块的所有命令   watch key [k ...

随机推荐

  1. 解决y7000笔记本ubuntu下wifi无法连接问题

    查看wifi与蓝牙硬件开关,发现ideapad的硬件模块都是关闭的 rfkill list all 打开终端 输入 sudo gedit /etc/rc.local 写入以下内容 进行保存 #!/bi ...

  2. 【ES6】let 命令

    let命令 为es6新增命令,用来声明变量,类似于var,但是let所声明的变量,只在let命令所在的块级作用域内有效 块级作用域写法(ES6块级作用域允许任意嵌套): // 块级作用域写法 { le ...

  3. pytorch例子学习——TRAINING A CLASSIFIER

    参考:https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html#sphx-glr-beginner-blitz-cifar1 ...

  4. <计算机网络>运输层

    端口号:通常在一台主机上运行多个网络应用程序,IP地址标识一台主机,而端口号标识特定的进程.端口是一个16bits的数,其大小在0-65535之间.0-1023之间的端口号叫做周知端口号 套接字:从网 ...

  5. AI R-CNN目标检测算法

    Region-CNN,简称R-CNN,是首次将深度学习应用于目标检测的算法. bounding box IOU 非极大值抑制 selective search 参考链接: https://blog.c ...

  6. Recurrent Neural Network[survey]

    0.引言 我们发现传统的(如前向网络等)非循环的NN都是假设样本之间无依赖关系(至少时间和顺序上是无依赖关系),而许多学习任务却都涉及到处理序列数据,如image captioning,speech ...

  7. 在Winform框架界面中改变并存储界面皮肤样式

    在本篇介绍的Winform界面样式改变及存储操作中,是指基于DevExpress进行界面样式的变化.一般情况下,默认我们会为客户提供多种DevExpress的界面皮肤以供个人喜好选择,默认DevExp ...

  8. 2小时学会Spring Boot(IDE:eclipse)

    一:安装STS插件 官网下载:点此下载STS 注意:STS版本必须与eclipse版本对应 安装教程:http://blog.csdn.net/cryhelyxx/article/details/53 ...

  9. 【C#复习总结】垃圾回收机制(GC)1

    摘要:今天我们漫谈C#中的垃圾回收机制,本文将从垃圾回收机制的原理讲起,希望对大家有所帮助. GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由 ...

  10. ASP.NET项目开发

    ASP.NET项目开发 1.C/S模式 (client 客户端 server 服务器):QQ.证券.酷狗.旺旺...需要下载响应软件: 工作原理:客户端请求--ASP.net服务器端应用(<-- ...