redis的事务机制详解
一、Redis的事务定义
Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
Redis事务的主要作用就是串联多个命令防止别的命令插队。
二、multi、exec、discard命令
在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的事务机制详解相关推荐
- Redis持久化——AOF机制详解
在运行情况下,Redis 以数据结构的形式将数据维持在内存中,为了让这些数据在 Redis 重启之后仍然可用,需要将数据写入持久存储 持久化是指将数据写入持久存储,例如固态磁盘(SSD) Redis ...
- Redis原理和机制详解
什么是Redis? Redis 是开源免费的,遵守BSD协议,是一个高性能的key-value非关系型数据库. Redis特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候 ...
- Redis事务机制详解
基本概念 1)什么是redis的事务? 简单理解为命令的集合,一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞,并且有如下两个特点: a)事务是一个单独的隔离操作:事务 ...
- Spring 事务机制详解
Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考. Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无 ...
- redis的持久化机制详解
redis的持久化机制 因为Redis的数据都储存在内存中,当进程退出时,所有数据都将丢失.为了保证数据安全,Redis支持RDB和AOF两种持久化机制有效避免数据丢失问题.RDB可以看作在某一时刻R ...
- Redis中事务用法详解
在关系型数据库中,事务是指一组命令的集合,这组命令构成了一个原子操作,这个操作要么全部执行成功,要么全部执行失败.而在非关系型数据库 Redis 中并非这样- Redis 中的事务同样也是一组命令的集 ...
- Redis主从同步机制详解
1.什么是高可用? 单机redis支撑的并发量有限(一般QPS在1W-几W不等),如果并发量大可能导致redis挂掉:redis配置不合理,fork子进程同步也可能导致redis挂掉(伪挂):操作系统 ...
- 关于事务管理的理解和Spring事务管理详解
转载于:http://www.mamicode.com/info-detail-1248286.html 1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱. 比如你去ATM机取1000 ...
- MySQL锁、事务隔离级别、MVCC机制详解、间隙锁、死锁等
一. 简介 1. 锁定义 锁是计算机协调多个进程或线程并发访问某一资源的机制. 在数据库中,除了传统的计算资源(如CPU.RAM.I/O等)的争用以外,数据也是一种供需要用户共享的资源.如何保证数据并 ...
最新文章
- 政府要尽快对应用商店出台管理办法
- ROS image_transport使用笔记
- 独家 | 利用Auto ARIMA构建高性能时间序列模型(附Python和R代码)
- zz SOA推荐书籍列表
- 智能理财在国内国外的发展现状
- 在Spring 框架中如何更有效的使用JDBC?
- proc文件(OLD)
- 360文件粉碎机_中山三乡资料文件销毁粉碎销毁资料文件公司一览表
- 您真的理解了SQLSERVER的日志链了吗?
- 使用GDAL进行RPC坐标转换
- python脚本根据cookies自动登录网站_为爬虫获取登录cookies:使用万能钥匙 Selenium 搞定一切登录...
- Ajax异步请求阻塞情况的解决办法(asp.net MVC Session锁的问题)
- Ubuntu 下安装 QQ
- 计算机主板维修试卷,计算机主板维修试卷.doc
- java serialVersionUID = 1L
- 数据比赛资料(杂合)
- CSS控制列表样式属性list-style有哪些?怎么用?
- 总体方差、样本方差、自由度的理解
- 一个正经的前端学习 开源 仓库(阶段十四)
- RGB灯带简单案例 - 玛克君arduino
热门文章
- CAS是什么?彻底搞懂CAS
- 经典面试题:如何快速求解根号2?
- python爬图片显示不了_Python爬取网页中的图片(搜狗图片)详解
- 常在河边走哪有不湿鞋-IT人银行卡被盗刷
- Haxe简介Haxe与ActionScript3.0区别
- v380云存储怎么查看_云服务器怎么查询 存储空间的使用情况如何
- [文献阅读]A deep neural network for unsupervised anomaly detection and diagnosis in MTSD
- C++main函数及参数
- Mina集成到Spring
- Bugku CTF 每日一题 三色绘恋