Redis之事务操作
2024-10-09 01:21:05
1.Redis事务的概念:
Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。
总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。
2.事务的四大特性(ACID)
- 原子性(Atomicity):整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性(Correspondence):在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
- 隔离性(Isolation):隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆, 必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。
- 持久性(Durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
3.Redis事务注意事项:
- Redis事务没有隔离级别的概念:批量操作在发送Exec命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的跟新,事务外查询不能看到。
- Redis不保证原子性:Reids中,单条命令式原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍然会被执行。
3-1.Redis为什么不支持回滚?
Redis已经在系统内部进行了功能简化,这样可以确保更快的运行速度,因为Redis不需要事务回滚的能力。
4.Redis事务三个阶段
- 开始事务——multi
- 命令入队——在此块中可以写事务中要执行的命令
- 执行事务——exec
5.Redis事务相关命令
- watch key1 key2 keyn ...:监视一个或者多个Key,如果过在事务执行之前,被监视的key会被其他命令改动,则事务被打断(类似了乐观锁)。
- multi:执行一个事务快的开始
- exec:执行所有事务快的命令(一旦执行exec后,之前加的监控所都会被取消掉)。
- discard:取消事务,放弃事务中的命令。
- unwatch:去下watch对key的监控。
6.Redis使用案例:
(1)正常执行
(2)放弃事务
(3)当事务执行失败,所有数据都不执行。首先我们要对数据进行监听才能保证数据是否被修改或者是否能正常执行。
最新文章
- jfinal 解决ajax 跨域访问--jsonp
- Windows Server 2012 中80端口被PID为4的系统进程占用解决方法
- SqlServer 数据库 引擎优化使用(六)
- c++引用总结
- Mysql学习笔记(五)数据查询之测试sql部分。
- SQL升级脚本实现按版本差异化升级
- CentOS下mysql安装和配置
- 夺命雷公狗ThinkPHP项目之----企业网站16之文章批量删除的完成
- AES加解密【示例】
- 【转】Android 带checkbox的listView 实现多选,全选,反选 -- 不错
- mysql存储过程controller的not found造成混乱的解决办法
- Ubuntu 14.04下搭建Node.js的开发环境
- 【转载】Static 关键字的作用
- Win32项目生成的程序exe图标显示异常的问题
- [LeetCode] Rectangle Overlap 矩形重叠
- UTC时间和普通时间的区别
- BOM之navigator对象和用户代理检测
- log4j(二)——如何控制日志信息的输出?
- [fixed] 解决 slf4j + log4j eclipse 可以打印日志,而在云服务器上不能打印
- 3D引擎Axiom的选择与学习.
热门文章
- shiro拦截所有报 Uncaught SyntaxError: Unexpected token &#39;<;&#39; 解决方法
- 将SublimeText加入右键菜单
- 国际惯例,Hello World。
- spring 请求静态资源文件
- [单调栈]小A的柱状图
- Python:(使用matplotlib画图)次坐标轴,两个坐标轴
- TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。
- ArcGIS Desktop的安装
- python框架-Django创建项目
- 下面总结一些在HTML中经常使用到的快捷键