第19章 事务
来源:互联网 发布:淘宝网首页不显示图片 编辑:程序博客网 时间:2024/05/18 08:02
通过MULTI、EXEC、WATCH等命令实现事务。
1. 事务的实现
1.1 事务开始
MULTI命令的执行标志着事务的开始
通过在客户端状态的flags属性中打开REDIS_MULTI标识来完成,
1.2 命令入队
事务状态:
- 客户端发送的命令为EXEC、DISCARD、WATCH、MULTI四个命令其中的一个,那么服务器立即执行这个命令
- 其他命令,而是将这个命令放入一个事务队列里面,然后向客户端返回QUEUED回复。
1.3 事务队列
客户端都有自己的事务状态,mstate
1.4 执行事务
2. WATCH命令的实现
一个乐观锁,可以在EXEC命令执行之前,监视任意数量的数据库键,并在EXEC命令执行时,检查被监视的键是否至少有一个已经被修改过了。
如果是,服务器拒绝执行事务,并向客户端返回代表事务执行失败的空回复
2.1 使用WATCH 命令监视数据库键
每个数据库都保存着一个watched_keys字典,这个字典的键是某个被WATCH命令监视的数据库键,字典的值是一个链表,链表中记录了所有监视响应数据库键的客户端。
2.2 监视机制的触发
multi.c/touchWatchKey
2.3 判断事务是否安全
REDIS_DIRTY_CAS
3. 事务的ACID性质
3.1 原子性
Redis不支持事务回滚机制,即使事务队列中的某个命令在执行期间出现了错误,整个事务也会继续执行下去,直到将事务队列中的所有命令都执行完毕为止。
3.2 一致性
3.3 隔离性
3.4 耐久性
0 0
- 第19章 事务
- 第14章 事务
- 第12章 事务和锁
- 第6章 数据库管理之事务
- mysql第三天 事务
- hibernate 10 事务和并发 | hibernate 实战(第二版) 第10章事务和并发 | 笔记
- Hibernate 事务和并发 | hibernate 实战(第二版) 第10章事务和并发 | 笔记
- hibernate 10 事务和并发 | hibernate 实战(第二版) 第10章事务和并发 | 笔记
- 第8章 数据操作与事务控制
- 【Oracle入门系列】第06章_DML与事务控制
- 第5章 PCIe总线的事务层
- 11gr2 oracle concepts(翻译) --第10章 事务
- 第6章 深入使用Hibernate 6.8事务控制
- 第14章 事务控制和锁定语句
- 第5章 PCIe总线的事务层
- 【数据库系统概念】第14章 事务 知识总结
- C++事务型内存技术规范:第1章
- C++事务型内存技术规范:第1章(英文)
- Android基础总结——进程优先级及提高优先级的方法(Service尽量不死之法)
- 安卓开发之引入第三方库导致jar包冲突解决办法
- iOS开发--TDD的iOS开发初步以及Kiwi使用入门
- 清除浮动
- 最小表示法--让你速度gank序列
- 第19章 事务
- MFC自绘-WzdButton按钮类
- SPOJ COTCount on a tree(树上路径第k小 主席树)
- HDU 2602:Bone Collector【01背包】
- Word2Vec之Deep Learning in NLP (一)词向量和语言模型
- PHP生成PDF文件
- 帮Facebook把用户做到7亿 他只做了三件事
- Android Studio奇技淫巧一览 大幅度提升工作效率
- Mr. Process的一生-Linux内核的社会视角 (1) 调度