当前位置: 首页 > news >正文

Redis的事务

在 Redis 中,事务(Transaction)是一组命令的集合,可以作为一个单独的操作来执行,保证这组命令要么全部执行成功,要么全部执行失败,具有原子性。在 Redis 中,事务是通过 MULTI、EXEC、DISCARD 和 WATCH 这几个命令来实现的。

Redis事务的基本流程如下:

  1. 使用 MULTI 命令标记事务的开始。
  2. 在 MULTI 和 EXEC 之间,逐个添加需要执行的命令。
  3. 使用 EXEC 命令提交事务,Redis 会执行事务中的所有命令。如果 EXEC 成功,则返回事务中所有命令的执行结果;如果其中有任何一个命令执行失败,则整个事务会被回滚。
  4. 如果在 MULTI 和 EXEC 之间使用 DISCARD 命令取消事务,事务中的所有命令都不会被执行。

Redis事务的特点和要点:

  1. 原子性:Redis事务具有原子性,事务中的所有命令要么全部执行成功,要么全部失败。
  2. 隔离性:Redis事务默认是串行执行的,即事务中的命令在执行期间不会被其他客户端的命令打断。
  3. 持久性:事务提交后的结果会被持久化到磁盘上,即使发生了断电等异常情况,Redis也可以保证事务的执行结果不会丢失。
  4. WATCH命令:可以使用 WATCH 命令监视一个或多个键,如果在事务执行之前这些键被其他客户端改动了,事务就不会被执行。

Watch监控的基本用法

  1. 使用 WATCH 命令可以监视一个或多个键,例如:WATCH key1 key2 key3。
  2. 在调用 MULTI 命令后,Redis 会开始监视这些键。
  3. 在执行 EXEC 命令前,通过调用 GET 或其他命令来检查被 WATCH 的键是否被修改过。
  4. 如果被 WATCH 的键在执行 EXEC 命令前被修改,Redis 将取消该事务的执行,返回给调用方一个表示事务已中止的标识。

ps:以下是我整理的java面试资料,密码是obht,感兴趣的可以看看。最后,创作不易,觉得写得不错的可以点点关注!

链接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面试宝典》 

        

http://www.lryc.cn/news/312422.html

相关文章:

  • 4.2 比多数opencv函数效果更好的二值化(python)
  • webpack打包一个文件,做了哪些事情
  • 设计模式学习笔记 - 设计原则 - 6.KISS原则和YAGNI原则
  • 【Vue3-vite】动态导入路由
  • C++——string类
  • 进制转换md5绕过 [安洵杯 2019]easy_web1
  • .kat6.l6st6r勒索病毒的最新威胁:如何恢复您的数据?
  • Day 6.有名信号量(信号灯)、网络的相关概念和发端
  • MySQL 常用优化方式
  • 算法刷题day22:双指针
  • 山人求道篇:八、模型的偏差与交易认知
  • MySQL 元数据锁及问题排查(Metadata Locks MDL)
  • JS中的函数
  • 微信小程序开发常用的布局
  • Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this
  • 算法简单试题
  • CSS 自测题 -- 用 flex 布局绘制骰子(一、二、三【含斜三点】、四、五、六点)
  • 蓝桥集训之牛的学术圈 I
  • 软件设计师软考题目解析21 --每日五题
  • python读写json文件详解
  • #include<ros/ros.h>头文件报错
  • mybatis单表curd笔记(尚硅谷
  • 在线重定义-操作步骤
  • 16:00面试,16:06就出来了,问的问题过于变态了。。。
  • 基于dashscope在线调用千问大模型
  • 【Python】可变数据类型 不可变数据类型 || hash
  • MySQL 篇-深入了解多表设计、多表查询
  • 【Java】Spring的ReflectionUtils类常用方法学习笔记
  • 内存函数详解
  • 事务(transaction)