在关系型数据库中,事务是指一组命令的集合,这组命令构成了一个原子操作,这个操作要么全部执行成功,要么全部执行失败。而在非关系型数据库 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中事务用法详解相关推荐

  1. mysql increment_mysql中auto_increment用法详解

    在mysql中AUTO_INCREMENT类型的属性用于为一个表中记录自动生成ID功能,也就是会自动自增一个ID了,如现在是1下次会自动是2了,就这么简单,下面来看mysql中auto_increme ...

  2. pdo mysql limit_PHP mysql中limit用法详解(代码示例)

    在MySQL中,LIMIT子句与SELECT语句一起使用,以限制结果集中的行数.LIMIT子句接受一个或两个offset和count的参数.这两个参数的值都可以是零或正整数. offset:用于指定要 ...

  3. php 配置 error_reporting,PHP中error_reporting()用法详解 技术分享

    在php中error_reporting函数有什么作用? error_reporting([ int $level ] ) - 设置应该报告何种 PHP 错误. 该函数能够在运行时设置 error_r ...

  4. 【 Python 中 int 用法详解】(转载)

    Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...

  5. Python 中 int 用法详解

    Python 中 int 用法详解 欢迎转载,转载请注明出处! 文章目录 Python 中 int 用法详解 0. 参考资料 1. int 的无参数调用 2. int 接收数字作为参数 3. int ...

  6. Python中self用法详解

    Python中self用法详解 https://blog.csdn.net/CLHugh/article/details/75000104 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 V ...

  7. c 语言中set的用法,C++中set用法详解

    1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构 ...

  8. sql语句中exists用法详解

    文章目录 一.语法说明 exists: not exists: 二.常用示例说明 1.查询a表在b表中存在数据 2.查询a表在b表中不存在数据 3.查询时间最新记录 4.exists替代distinc ...

  9. Oracle数据库之rownum,ORACLE数据库中Rownum用法详解

    ORACLE 中ROWNUM用法总结! 对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(,& gt;=,=, ...

最新文章

  1. 马尔科夫、最大熵、条件随机场
  2. NPM采用Rust以消除性能瓶颈
  3. 探索未知种族之osg类生物---起源
  4. QTP的那些事--学习QTP必备的网站整理
  5. 【51Nod - 1344】走格子 (思维)
  6. (2) MongoDB基本概念及与关系型数据库的对照
  7. 百度将砸钱100多亿元建云计算中心(2012-09-03)
  8. Redis入门指南笔记
  9. idea 使用中文汉化包教程
  10. 【C语言】如何判断一个数字是否为素数(质数)?
  11. ie11不兼容 html编辑器,ewebeditor编辑器已经不能兼容IE11
  12. 关于大学,关于游戏和游戏开发
  13. win10添加网络打印机_大神教你设置 win10系统安装打印机及驱动的详细方案 -win10使用教程...
  14. 来点基础的东西,关于浮点数的大小端转换以及浮点数的格式解析
  15. 用AnLink可以用鼠标同时操作电脑和手机
  16. 服务器物理安装,安装Nano Server物理服务器Hyper-V角色
  17. 当你觉得生活快熬不下去时,请你读一读《活着》
  18. 网络近端串扰测试软件,使用DSX2-5000或者DTX-1800测试网线外部串扰
  19. 如何打通AD、企业微信、飞书、钉钉等社交账号及内外网应用身份?
  20. python之安装第三方库失败的解决方法

热门文章

  1. 【linux】cpu过高解决方法
  2. 刚拿到PMP证书, 想吐槽一下, PMP的考证真的值得考吗?
  3. Facebook广告投放目标的简化
  4. 从 DevSecOps 流程视角看 IAST 技术应用与发展
  5. php置顶功能代码,jquery实现页面置顶功能代码
  6. 【Oracle】CBO优化详解
  7. docker-comose搭建sonarqube 及 maven项目使用
  8. 自动翻译软件-批量批量自动翻译软件推荐
  9. 绿色抓屏截屏工具:FastStoneCapture
  10. 模拟CMOS集成电路设计入门学习(3)