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

Redis 事务

Redis 事务

事务是一个很重要的数据库

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

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

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

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

Redis 事务的常用命令

  • DISCARD 取消事务,放弃执行事务块内的所有命令。
  • EXEC 执行所有事务块内的命令。
  • MULTI 标记一个事务块的开始。
  • UNWATCH 取消 WATCH 命令对所有 key 的监视。
  • ATCH key [key …] 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

简单的事务控制

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

redis 127.0.0.1:6379> MULTI
OK

redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED

redis 127.0.0.1:6379> GET book-name
QUEUED

redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED

redis 127.0.0.1:6379> SMEMBERS tag
QUEUED

redis 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"

取消一个事务

我们可以执行 DISCARD 命令来取消一个事务,让事务回滚。示例如下:

redis 127.0.0.1:6379> SET age 20
OK
redis 127.0.0.1:6379> GET age
"20"
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET age 21
QUEUED
redis 127.0.0.1:6379> SET age 22
QUEUED
redis 127.0.0.1:6379> DISCARD
OK
redis 127.0.0.1:6379> GET age
"20"

该文章会更新,欢迎大家批评指正。

推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器

相关文章:

  • STM32H7独立看门狗 (IWDG)的应用方法介绍
  • 算法学习001-圆桌问题 中小学算法思维学习 信奥算法解析 c++实现
  • Java23种设计模式-结构型模式之外观模式
  • Python读写文本URL蓝牙WIFI自动连接电子名片位置坐标智能海报等NDEF标签
  • 【Vue】常见的七大属性(描述+案例)
  • mysql download 2024
  • nginx之重写功能 模块指令 防盗链
  • React Switch用法及手写Switch实现
  • 福特锐界2021plus 汽车保养手册
  • 机器学习是什么
  • yaml文件详解
  • UI学习-学习内容
  • LeetCode刷题复盘笔记—一文搞懂纯完全背包问题(动态规划系列第十一篇)
  • python隶属关系图模型:基于模型的网络中密集重叠社区检测方法
  • 【C++】set/multiset/map/multimap
  • Nginx学习总结(目录)
  • 【pen200-lab】10.11.1.8
  • 文件操作及IO
  • 精品基于Javaweb的酒店民宿管理推荐平台SSM
  • [附源码]计算机毕业设计二次元信息分享平台的设计及实现
  • [附源码]Python计算机毕业设计Django勤工助学管理系统
  • Request和Response基础知识入门
  • Lottie 动画导出为 GIF/MP4 以及与 QML 集成演示
  • 前端问题解决方法
  • 每日挠头算法题(十五)螺旋矩阵II
  • 度量方法总结
  • 基于正则化Regularized Interpolation插值算法的图像超分辨重构研究-附Matlab代码
  • Java 反射机制
  • 【CMU15-445 Part-8】Tree Indexes ii
  • JSON相关
  • Hygieia (Devops)开源-搭建步骤(一)
  • 桥接设计模式