Redis中事务用法详解
在关系型数据库中,事务是指一组命令的集合,这组命令构成了一个原子操作,这个操作要么全部执行成功,要么全部执行失败。而在非关系型数据库 Redis 中并非这样…
Redis 中的事务同样也是一组命令的集合,这些命令会按序放入一个队列中,等待执行。与关系型数据库不同的是,Redis 允许这些命令部分执行成功。
1、Redis 事务有哪些特性
- Redis 事务中的所有命令都会存放在队列中按序执行。
- Redis 事务中的所有命令在没有提交(exec)之前,都不会执行,所以也就不存在关系型数据库中经常出现的脏读,不可重复读,幻读等并发操作的问题。
- Redis 事务不保证原子性,命令如果本身的语法没有问题,只是在执行的过程中出错,不影响其他命令的执行。
2、Redis中与事务相关的命令
- multi:开启一个事务,类似 MySQL 中的 begin transaction。
- discard:回滚事务,类似 MySQL 中的 rowback。
- exec:提交事务,类似 MySQL 中的 commit。
3、Redis事务操作演示
3.1 事务正常执行
3.2 事务回滚放弃操作
3.3 事务中命令操作错误,全体回滚
注意:如果命令在入队列的时候就发生了错误,将会导致所有命令全部回滚。
3.4 事务中语法操作错误,错误命令回滚,其它命令正常执行
注意:如果命令本身的语法并没有错误,只是在事务执行的时候某条命令出了错,那么其他的命令不会回滚,正常执行,出错的命令执行失败。
4、redis事务在python中使用
示例代码:
import redisres = redis.from_url('redis://192.168.124.49')
print(res)res.set('name', 'dgw')
res.set('age', 27)pipe = res.pipeline()
pipe.multi()
pipe.set('name', 'dgw2')
pipe.set('age', 28)
# reset之后,事务被取消,pipe.set('name', 'dgw2')和pipe.set('age', 28)都不会执行
pipe.reset()
s = pipe.execute()
print(s)s2 = res.mget('name', 'age')
print(s2)
运行结果:
Redis中事务用法详解相关推荐
- mysql increment_mysql中auto_increment用法详解
在mysql中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,也就是会自动自增一个ID了,如现在是1下次会自动是2了,就这么简单,下面来看mysql中auto_increme ...
- pdo mysql limit_PHP mysql中limit用法详解(代码示例)
在MySQL中,LIMIT子句与SELECT语句一起使用,以限制结果集中的行数.LIMIT子句接受一个或两个offset和count的参数.这两个参数的值都可以是零或正整数. offset:用于指定要 ...
- php 配置 error_reporting,PHP中error_reporting()用法详解 技术分享
在php中error_reporting函数有什么作用? error_reporting([ int $level ] ) - 设置应该报告何种 PHP 错误. 该函数能够在运行时设置 error_r ...
- 【 Python 中 int 用法详解】(转载)
Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...
- Python 中 int 用法详解
Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...
- Python中self用法详解
Python中self用法详解 https://blog.csdn.net/CLHugh/article/details/75000104 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 V ...
- c 语言中set的用法,C++中set用法详解
1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...
- sql语句中exists用法详解
文章目录 一.语法说明 exists: not exists: 二.常用示例说明 1.查询a表在b表中存在数据 2.查询a表在b表中不存在数据 3.查询时间最新记录 4.exists替代distinc ...
- Oracle数据库之rownum,ORACLE数据库中Rownum用法详解
ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...
最新文章
- 马尔科夫、最大熵、条件随机场
- NPM采用Rust以消除性能瓶颈
- 探索未知种族之osg类生物---起源
- QTP的那些事--学习QTP必备的网站整理
- 【51Nod - 1344】走格子 (思维)
- (2) MongoDB基本概念及与关系型数据库的对照
- 百度将砸钱100多亿元建云计算中心(2012-09-03)
- Redis入门指南笔记
- idea 使用中文汉化包教程
- 【C语言】如何判断一个数字是否为素数(质数)?
- ie11不兼容 html编辑器,ewebeditor编辑器已经不能兼容IE11
- 关于大学,关于游戏和游戏开发
- win10添加网络打印机_大神教你设置 win10系统安装打印机及驱动的详细方案 -win10使用教程...
- 来点基础的东西,关于浮点数的大小端转换以及浮点数的格式解析
- 用AnLink可以用鼠标同时操作电脑和手机
- 服务器物理安装,安装Nano Server物理服务器Hyper-V角色
- 当你觉得生活快熬不下去时,请你读一读《活着》
- 网络近端串扰测试软件,使用DSX2-5000或者DTX-1800测试网线外部串扰
- 如何打通AD、企业微信、飞书、钉钉等社交账号及内外网应用身份?
- python之安装第三方库失败的解决方法