一、Redis的事务定义

Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
Redis事务的主要作用就是串联多个命令防止别的命令插队。

二、multiexecdiscard命令

在Redis中从输入multi命令开始,输入的命令都会依次进入命令队列中,但不会执行,直到输入exec后,Redis会将之前的命令队列中的命令依次执行。
在组队的过程中可以通过discard来放弃组队,这样先前输入的命令也都将不会执行。这个过程的示意图如下:

三、事务的错误处理

在组队的过程中如果某个命令出现了错误报告,那么执行exec时整个的命令队列都会被取消,即所有的命令都不会成功执行。这个过程的示意图如下:

如果在执行阶段的某个命令报出了错误(比如对一个非整数型的值进行incr自增),则执行exec时只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。这个过程的示意图如下:

四、watch key [key ...] 命令

在Redis执行multi之前,先执行watch key1 [key2],可以监视一个(或多个) key ,如果在事务执行exec之前这个(或这些) key 被其他命令所改动(比如被Redis的另一个连接先修改了key的value值并执行成功),那么当前事务将被打断,对这个key的修改将无效。

 五、unwatch命令

unwatch命令可以取消watch命令对所有 key 的监视。

如果在执行watch命令之后,exec命令或discard命令先被执行了的话,那么就不需要再执行unwatch了。

六、Redis事务三特性

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

② 没有隔离级别的概念
队列中的命令没有提交之前都不会实际被执行,因为事务提交前任何指令都不会被实际执行。

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

redis的事务机制详解相关推荐

  1. Redis持久化——AOF机制详解

    在运行情况下,Redis 以数据结构的形式将数据维持在内存中,为了让这些数据在 Redis 重启之后仍然可用,需要将数据写入持久存储 持久化是指将数据写入持久存储,例如固态磁盘(SSD) Redis ...

  2. Redis原理和机制详解

    什么是Redis? Redis 是开源免费的,遵守BSD协议,是一个高性能的key-value非关系型数据库. Redis特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候 ...

  3. Redis事务机制详解

    基本概念 1)什么是redis的事务? 简单理解为命令的集合,一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞,并且有如下两个特点: a)事务是一个单独的隔离操作:事务 ...

  4. Spring 事务机制详解

    Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考. Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无 ...

  5. redis的持久化机制详解

    redis的持久化机制 因为Redis的数据都储存在内存中,当进程退出时,所有数据都将丢失.为了保证数据安全,Redis支持RDB和AOF两种持久化机制有效避免数据丢失问题.RDB可以看作在某一时刻R ...

  6. Redis中事务用法详解

    在关系型数据库中,事务是指一组命令的集合,这组命令构成了一个原子操作,这个操作要么全部执行成功,要么全部执行失败.而在非关系型数据库 Redis 中并非这样- Redis 中的事务同样也是一组命令的集 ...

  7. Redis主从同步机制详解

    1.什么是高可用? 单机redis支撑的并发量有限(一般QPS在1W-几W不等),如果并发量大可能导致redis挂掉:redis配置不合理,fork子进程同步也可能导致redis挂掉(伪挂):操作系统 ...

  8. 关于事务管理的理解和Spring事务管理详解

    转载于:http://www.mamicode.com/info-detail-1248286.html 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000 ...

  9. MySQL锁、事务隔离级别、MVCC机制详解、间隙锁、死锁等

    一. 简介 1. 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供需要用户共享的资源.如何保证数据并 ...

最新文章

  1. 政府要尽快对应用商店出台管理办法
  2. ROS image_transport使用笔记
  3. 独家 | 利用Auto ARIMA构建高性能时间序列模型(附Python和R代码)
  4. zz SOA推荐书籍列表
  5. 智能理财在国内国外的发展现状
  6. 在Spring 框架中如何更有效的使用JDBC?
  7. proc文件(OLD)
  8. 360文件粉碎机_中山三乡资料文件销毁粉碎销毁资料文件公司一览表
  9. 您真的理解了SQLSERVER的日志链了吗?
  10. 使用GDAL进行RPC坐标转换
  11. python脚本根据cookies自动登录网站_为爬虫获取登录cookies:使用万能钥匙 Selenium 搞定一切登录...
  12. Ajax异步请求阻塞情况的解决办法(asp.net MVC Session锁的问题)
  13. Ubuntu 下安装 QQ
  14. 计算机主板维修试卷,计算机主板维修试卷.doc
  15. java serialVersionUID = 1L
  16. 数据比赛资料(杂合)
  17. CSS控制列表样式属性list-style有哪些?怎么用?
  18. 总体方差、样本方差、自由度的理解
  19. 一个正经的前端学习 开源 仓库(阶段十四)
  20. RGB灯带简单案例 - 玛克君arduino

热门文章

  1. CAS是什么?彻底搞懂CAS
  2. 经典面试题:如何快速求解根号2?
  3. python爬图片显示不了_Python爬取网页中的图片(搜狗图片)详解
  4. 常在河边走哪有不湿鞋-IT人银行卡被盗刷
  5. Haxe简介Haxe与ActionScript3.0区别
  6. v380云存储怎么查看_云服务器怎么查询 存储空间的使用情况如何
  7. [文献阅读]A deep neural network for unsupervised anomaly detection and diagnosis in MTSD
  8. C++main函数及参数
  9. Mina集成到Spring
  10. Bugku CTF 每日一题 三色绘恋