【Redis】事务

这篇具有很好参考价值的文章主要介绍了【Redis】事务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据库事务

定义:在一次跟数据库连接会话当中,所有的执行sql,要么一起成功,要么一起失败。经典案例:转账

Redis事务

官网:https://redis.io/docs/manual/transactions/

  • 定义:

    可以一次执行多个命令,本质是一组命令的集合。个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞

  • 作用

    一个队列中,一次性、顺序性、排他性的执行一系列命令

Redis事务VS 数据库事务

1 单独的隔离操作 Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的
2 没有隔离级别的概念 因为事务提交前任何指令都不会被实际执行,也就不存在”事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题了
3不保证原子性 Redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力
4 排它性 Redis会保证一个事务内的命令依次执行,而不会被其它命令插入

常用命令

【Redis】事务

案例:正常执行 MULTI->EXEC

【Redis】事务

案例:放弃事务 MULTI->DISCARD

【Redis】事务

案例:全体连坐(语法错误:原子性)

语法错误会打断事务,使得之前的任务全失败

【Redis】事务

案例:冤头债主(逻辑错误:不保证一起成功,一起失败)

Redis不提供事务回滚的功能,开发者必须在事务执行出错后,自行恢复数据库状态

注意和传统数据库事务区别,不一定要么一起成功要么一起失败

【Redis】事务

案例:watch监控

Redis使用Watch来提供乐观锁定,类似于CAS(Check-and-Set)

  • 悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。

  • 乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据。

    乐观锁策略:提交版本必须大于记录当前版本才能执行更新

【Redis】事务

案例

  • 正常情况

    初始化k1和balance两个key,先监控再开启multi保证两key变动在同一个事务内

    【Redis】事务
  • 加塞情况

    watch命令是一种乐观锁的实现,Redis在修改的时候会检测数据是否被更改,如果更改了,则执行失败,相当于连坐->整个事务全体失败

    【Redis】事务
  • 放弃监控unwach文章来源地址https://www.toymoban.com/news/detail-438326.html

    【Redis】事务

到了这里,关于【Redis】事务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 往docker中cloudbeaver的容器添加达梦数据库、impala数据库连接支持(cloudbeaver添加自定义数据连接)

    cloudbeaver默认没有开放impala连接,更不会支持国产数据库了 docker安装运行cloudbeaver可以参考文章:docker安装运行CloudBeaver并设置默认语言为中文 本文跳过cloudbeaver镜像拉取,直接就开始实现自定义数据库连接功能 1.1、新建挂载的宿主机根目录 挂载的文件都放置该目录下 1.2、运

    2024年01月19日
    浏览(84)
  • 【Linux】Centos安装Redis数据库并内网穿透远程连接

    Redis作为一款高速缓存的key value键值对的数据库,在许许多多的场景中广泛使用,由于是把数据存储在内存中,所以读写效率极高。 下面介绍如何在内网虚拟机的linux中搭建redis并通过cpolar内网穿透实现公网访问 进入user下面的local目录,通常外部软件安装在此目录 下载redis 下载好后

    2024年02月05日
    浏览(51)
  • C++集群聊天服务器 muduo+nginx+redis+mysql数据库连接池 笔记 (下)

    C++集群聊天服务器 网络模块+业务模块+CMake构建项目 笔记 (上)-CSDN博客 https://blog.csdn.net/weixin_41987016/article/details/135991635?spm=1001.2014.3001.5501 C++集群聊天服务器 数据模块+业务模块+CMake构建项目 笔记 (上)-CSDN博客 https://blog.csdn.net/weixin_41987016/article/details/136007616?spm=1001.2014.

    2024年02月19日
    浏览(91)
  • SQLAlchemy 库创建数据库引擎和会话工厂附带SQLSERVER驱动版本确认方式

    SQL Server 驱动版本确认 确认Sql Server版本:CMD执行:sqlcmd -S 服务器名称 -U 用户名 -P 密码 -Q “SELECT @@VERSION” 根据版本确认连接方式 例如 Sql Server版本:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 连接方式:‘mssql+pyodbc://user:pass@host:port/database?driver=SQL+Server+Native+Client+10.0’ SQL

    2024年02月09日
    浏览(54)
  • 数据库——事务,事务隔离级别

    什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误

    2024年02月11日
    浏览(46)
  • openGauss学习笔记-196 openGauss 数据库运维-常见故障定位案例-强制结束指定的问题会话

    196.1 强制结束指定的问题会话 196.1.1 问题现象 有些情况下,为了使系统继续提供服务,管理员需要强制结束有问题的会话。 196.1.2 处理办法 以操作系统用户omm登录主机。 使用如下命令连接数据库。 postgres为需要连接的数据库名称,8000为端口号。 从当前活动会话视图查找问

    2024年01月18日
    浏览(51)
  • 【数据库】Python脚本实现数据库批量插入事务

    在工作中可能会遇到需要批量插入的场景, 而批量插入的过程具有 耗时长 的特点, 再此过程很容易出现程序崩溃的情况.为了解决插入大量数据插入后崩溃导致 已插入数据无法清理 及 未插入数据无法筛出 的问题, 需要编写一个脚本记录已插入和未插入的数据, 并可以根据记录

    2024年02月08日
    浏览(49)
  • spring事务和数据库事务是怎么实现

    Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获取连接 Connection con = DriverManager.getConnection() 开启事务con.setAutoCommit(true/false); 执行CRUD 提交事务/回滚事务

    2024年02月13日
    浏览(47)
  • VsCode连接Mysql、Redis、MariaDB、SQL Server等数据库并进行可视化操作。无需额外的去下载可视化数据软件了,VsCode前端很方便的插件!!!

    前言:VsCode直接连接并操作数据库!最近使用公司的新电脑时,才发现好多东西需要重新下载 、配置,最近偶然接触到了 VsCode 的 Database Clinent 插件,可连接众多的服务,其中就支持连接到本地和远程的数据库,可视化操作、语句查询、导入、导出数据等基本功能集合,个人

    2024年02月05日
    浏览(57)
  • 数据库事务

    目录 一.事务 1.为什么要存在事务 2.什么是事务 3.事务的特性(ACID) 4.MySQL中事务的使用 二.事务的隔离级别 1.什么是隔离级别 2.隔离级别的分类 3.不同隔离级别的现象 4.MySQL中设置隔离级别 5. 四种隔离级别和锁 1.READ-UNCOMMITED 2.READ-COMMITED 3.REPEATABLE-READ 4.SERIALIZABLE 刚开始我们拿一

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包