Redis(四)事务

发布时间:2024年01月11日

事务

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

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

Redis事务 vs 数据库事务

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

常用命令

在这里插入图片描述

  1. 正常执行
MULTI
EXEC
  1. 放弃事务
MULTI
DISCARD
  1. 全体连坐
    在执行前命令检查发现错误无法进入队列,会直接不执行
    在这里插入图片描述
    在这里插入图片描述

  2. 冤头债主
    在执行前命令检查没有发现错误进入队列,运行出现异常,能成功的命令执行成功,错误命令报错,无法回滚
    在这里插入图片描述在这里插入图片描述

  3. watch监控
    乐观锁类似CAS
    在这里插入图片描述
    watch命令是一种乐观锁的实现,Redis在修改的时候会检测数据是否被更改,如果更改了,则执行失败第一个窗口蓝色框第5步执行结果返回为空,也就是相当于是失败
    在这里插入图片描述

总结

  1. 开始:以MULTI开始一个事务
  2. 入队:将多个命令入队到事务中,接到这些命令不会立即执行,放到等待执行事务队列
  3. 执行:由EXEC命令触发事务
文章来源:https://blog.csdn.net/qq_45742250/article/details/135450849
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。