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

Redis 教程系列之Redis 事务(十六)

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:

  • 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
  • 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

实例

以下是一个事务的例子, 它先以 MULTI 开始一个事务, 然后将多个命令入队到事务中, 最后由 EXEC 命令触发事务, 一并执行事务中的所有命令:

redis 127.0.0.1:6379> MULTI
OKredis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUEDredis 127.0.0.1:6379> GET book-name
QUEUEDredis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUEDredis 127.0.0.1:6379> SMEMBERS tag
QUEUEDredis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"2) "C++"3) "Programming"

Redis 事务命令

下表列出了 redis 事务的相关命令:

序号命令及描述
1DISCARD
取消事务,放弃执行事务块内的所有命令。
2EXEC
执行所有事务块内的命令。
3MULTI
标记一个事务块的开始。
4UNWATCH
取消 WATCH 命令对所有 key 的监视。
5WATCH key [key ...]
监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

相关文章:

  • 前端理论总结(css3)——css优化的方法
  • 线程通信同步
  • 低代码与数字化转型:重塑企业技术生态的新引擎
  • STM32之HAL开发——串口配置(源码)
  • mac系统使用经验
  • Etcd 基本入门
  • Pandas合并数据集
  • 线程安全(买票案例):加锁方式(synchronized、Lock锁)【同步代码块、同步方法】--学习JavaEE的day31上
  • ROS2高效学习第十章 -- ros2 高级组件之 component 合并进程启动 其一
  • 图像分类实战:深度学习在CIFAR-10数据集上的应用
  • Java 中文官方教程 2022 版翻译完成
  • LQR的横向控制与算法仿真实现
  • BaseDao封装增删改查
  • mybatisplus如何拼接动态sql
  • 13 React useEffect 详解
  • [PHP内核探索]PHP中的哈希表
  • 时间复杂度分析经典问题——最大子序列和
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • canvas 高仿 Apple Watch 表盘
  • CentOS 7 防火墙操作
  • const let
  • Cumulo 的 ClojureScript 模块已经成型
  • Flannel解读
  • java8-模拟hadoop
  • magento 货币换算
  • Selenium实战教程系列(二)---元素定位
  • Web Storage相关
  • 读懂package.json -- 依赖管理
  • 微信开放平台全网发布【失败】的几点排查方法
  • 我感觉这是史上最牛的防sql注入方法类
  • 小程序01:wepy框架整合iview webapp UI
  • 在Unity中实现一个简单的消息管理器
  • #1015 : KMP算法
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (zhuan) 一些RL的文献(及笔记)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (小白学Java)Java简介和基本配置
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net 7 上传文件踩坑
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .net Signalr 使用笔记
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net知识和学习方法系列(二十一)CLR-枚举
  • [ C++ ] STL_list 使用及其模拟实现
  • [20150904]exp slow.txt
  • [20181219]script使用小技巧.txt
  • [⑧ADRV902x]: Digital Pre-Distortion (DPD)学习笔记
  • [AIGC] Kong:一个强大的 API 网关和服务平台
  • [Android]常见的数据传递方式