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

redis的事务和watch机制

这里写目录标题

  • 第一章、redis事务和watch机制
    • 1.1)redis事务,事务的三大命令
      • 语法:开启事务 multi
      • 语法:执行事务 exec
      • 语法:取消事务 discard
    • 1.2)redis事务的错误和回滚的情况
    • 1.3)watch机制
      • 语法:watch key [key ...]
      • 语法:unwatch

第一章、redis事务和watch机制

1.1)redis事务,事务的三大命令

什么是redis事务
Redis 中的事务(transaction)是一个单独隔离的操作,保证两个或两个以上的命令集合按需排队并顺序执行,中间不会被任何其他操作打断。
redis事务其实是指运用事务的思想实现一组集合命令的执行,没有回滚的概念,严格意义上没有事务。

①multi - setAutoCommoit(false)-事务开启

语法:开启事务 multi

作用:标记一个事务的开始。通过multi,后续的命令都会按照先后顺序被放进一个队列当中。当用户键入exec后,这些指令都会按顺序执行。
返回值:总是返回 ok

②exec -执行

语法:执行事务 exec

作用:执行所有事务块内的命令
返回值:事务内的所有执行语句内容,事务被打断(影响)返回 nil


③discard -取消

语法:取消事务 discard

作用:取消事务,如果开启multi后输入若干命令,再键入discard,则之前的命令令通通取消执行。
返回值:总是返回 ok

# 开启事务
127.0.0.1:6379> MULTI
OK
# 输入两个或者两个以上命令
127.0.0.1:6379(TX)> set k1 v1
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
# 执行命令
127.0.0.1:6379(TX)> EXEC
1) OK
2) OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"

1.2)redis事务的错误和回滚的情况


①组队时出错,错误对于redis来说是已知的,事务中的所有指令都会失效。
在这里插入图片描述

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set k1 v1
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> set k33
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379(TX)> set k4 v4
QUEUED
127.0.0.1:6379(TX)> exec
(error) EXECABORT Transaction discarded because of previous errors.
127.0.0.1:6379> keys *
(empty array)


②运行时出错:因为错误是未知的,所以redis必须执行时才能知道错误,而redis无错误回滚机制,会继续执行后续指令并有效。
在这里插入图片描述

127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set k1 v1
QUEUED
127.0.0.1:6379(TX)> INCR k1
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> EXEC
1) OK
2) (error) ERR value is not an integer or out of range
3) OK
127.0.0.1:6379> keys *
1) "k1"
2) "k2"
127.0.0.1:6379>

1.3)watch机制

①watch 监视某个或者某几个key的值,如果有 key 的 value 值在事务 EXEC 执行之前被修改了,那么事务将被打断。
返回值:总是返回 ok

语法:watch key [key …]


②取消 WATCH 命令对所有 key 的监视。如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行 UNWATCH 了
返回值:总是返回 ok

语法:unwatch


③例子
启动服务器redis-server , 再开启两个客户端连接。 分别叫 A 客户端 (红色)和 B 客户端(黄色)。
在这里插入图片描述
在这里插入图片描述
1)在 A 客户端设置 key : str.lp 登录人数为 10
2)在 A 客户端监视 key : str.lp
3)在 A 客户端开启事务 multi
4)在 A 客户端修改 str.lp 的值为 11
5)在 B 客户端修改 str.lp 的值为 15
6)在 A 客户端执行事务 exec
7)在 A 客户端查看 str.lp 值,A 客户端执行的事务没有提交,因为 WATCH 的 str.lp 的值已经被修改了, 所以放弃了事务。
在这里插入图片描述

相关文章:

redis的事务和watch机制

这里写目录标题 第一章、redis事务和watch机制1.1)redis事务,事务的三大命令语法:开启事务 multi语法:执行事务 exec语法:取消事务 discard 1.2)redis事务的错误和回滚的情况1.3)watch机制语法&…...

objectMapper.getTypeFactory().constructParametricType 方法的作用和使用

在使用 Jackson 库进行 JSON 数据的序列化和反序列化时,经常会使用到 ObjectMapper 类。其中,objectMapper.getTypeFactory().constructParametricType 方法用于构造泛型类型。 具体作用和使用如下: 作用: 构造泛型类型&#x…...

【websocket - Tornado】简易聊天应用

1、背景 项目测试的过程中需要自己搭建一个webscoket站点,确保此类服务接入后台系统后访问不受影响。python的服务框架常用的有Flask、Django、Tornado,每个框架的侧重点不同,导致使用的场景就会有所差异。 Flask轻量级,采用常规的同步编程方式,需要安装其他模块辅助,主…...

TCP 三次握手,四次挥手

1、三次握手 第一次握手 SYN 等于1,SeqX 第二次握手 SYN等于1 ACK等于1,SeqY,AckX1 第三次SYN等于0 ACK等于1,SeqX1,AckY1 ackRow都是对应请求seqraw,三次握手后,Seq就是服务器前一个包中的ac…...

Nginx之Rewrite重定向

常见的Nginx正则表达式 ^:匹配输入字符串的起始位置 $:匹配输入字符串的结束位置 *:匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” :匹配前面的字符一次或者多次。如“ol”能匹配"ol"及“oll”、&q…...

uni-app微信小程序开发自定义select下拉多选内容篇

分享-2023年高级前端进阶:前端登顶之巅-最全面的前端知识点总结站点 *分享一个使用比较久的🪜 技术框架公司的选型:uni-app uni-ui vue3 vite4 ts 需求分析:微信小程序-uni-ui内容 1、创建一个自定义的下拉,支持多…...

VUE+view table.exportCsv()导出.csv文档时如何防止数据格式为科学计数

当使用table.exportCsv()方法导出数据时,出现科学计数法问题,像电话号码,身份证号码等,当数据大于15位后面的会用0替代。 针对这一问题,解决方法如下:就是再数字前加上制表符“\t”注意双引号,…...

Java基础练习六(排序)

排序 1. 第n大数 给定一个整数数组,输入一个值 n, 输出数组中第 n 大的数。 import java.util.Arrays; import java.util.Scanner;public class Work0801 {public static void main(String[] args) {int[] arr {2,3,1,8,3,9,6};// 冒泡排序,第n大数for (int i 0; …...

【Go】Go数据操作 - 处理JSON文件

目录 何为JSON 编码JSON 实践时刻 解码JSON 实践时刻 延伸拓展 何为JSON JSON (JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。JSON最初是JavaScript的一部分,后由于便于快速编写的特性,被开发者独立出来。基本上所有的语…...

服务器之LNMP

lnmp的构成 L:linux系统,操作系统。 N:nginx网站服务,前端,提供前端的静态页面服务。同时具有代理,转发的作用。 转发:主要是转发后端请求。转发到PHP。nginx没有处理动态资源的功能,他有可以支持转发动态请求的模块。 M&…...

恒运资本:定向增发一般多久完成?

随着现代企业的不断发展壮大,企业需求的资金也越来越多,而定向增发成为了企业融资的一个不可或缺的方法之一。那么,定向增发一般需求多长时刻来完结呢?本文将从多个角度进行剖析,以期对此问题有更深化的了解。 一、 定…...

mysql进阶篇(二)

前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

考研C语言进阶题库——更新31-32题

目录 31.姜太公门前有一个池塘,他每天都会去池塘里面钓鱼,他钓鱼技术非常高,距离水面五米的深度之内,包括五米的鱼,他都能钓到池塘里面一共有n条鱼,给出每条鱼距离水面的高度,问姜太公一次能钓…...

机动车号牌正则表达式(兼容新能源车牌)

说明:“|”前面面是绿牌车(8位)规则,“|”后面是蓝牌车(7位)规则。 ([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]A-Z)|(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵…...

idea如何上传项目到github(超详细)

idea如何上传项目到github 1、IDEA配置2、项目上传到本地仓库2.1、创建本地git仓库2.2、Add操作2.3、Commit操作 3、项目上传到Github4、拿到登录Github的token 1、IDEA配置 File-Settings-VersionControl-Git Git的安装路径下bin目录下的git.exe可执行文件 可以直接点 Gene…...

护网专题简单介绍

护网专题简单介绍 一、护网红蓝队介绍1.1、网络安全大事件1.2、护网行动由来1.3、护网行动中的角色二、红队介绍2.1、红队所需技能2.2、红队攻击流程 三、蓝队介绍3.1、蓝队所需技能3.2、蓝队防守四阶段3.3、蓝队前期准备 四、常见安全厂商介绍4.1、常见安全厂商 五、常见安全产…...

GO学习之 网络通信(Net/Http)

GO系列 1、GO学习之Hello World 2、GO学习之入门语法 3、GO学习之切片操作 4、GO学习之 Map 操作 5、GO学习之 结构体 操作 6、GO学习之 通道(Channel) 7、GO学习之 多线程(goroutine) 8、GO学习之 函数(Function) 9、GO学习之 接口(Interface) 10、 文章目录 GO系列前言一、H…...

<dependency> idea中为什么这个变黄色

在IDE中&#xff0c;当你的代码出现黄色高亮时&#xff0c;通常表示存在警告或建议的提示。对于Maven的<dependency>标签来说&#xff0c;黄色高亮可能有以下几种原因&#xff1a; 依赖项未找到&#xff1a;黄色高亮可能表示IDE无法找到指定的依赖项。这可能是由于配置错…...

SA8000 社会责任要求之健康安全准则

【SA8000 社会责任要求之健康安全准则】 健康和安全 准则 3.1 组织应提供一个安全和健康的工作环境&#xff0c;并应采取有效的措施防止潜在的健康和安全事故和职业伤害&#xff0c;或在工作的过程中发生的或引起的疾病。基于产业相关的安全与健康的知识以及任何特定的危害&…...

SpringMVC的架构有什么优势?——控制器(三)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…...

AI专著撰写实用指南:优质工具推荐,开启高效写作之旅

学术专著写作的挑战与AI工具解决方案 学术专著的严谨性&#xff0c;离不开大量的资料和数据支持。收集和整合这些资料与数据却是写作过程中最繁琐也是最耗时的部分。研究者需要全面查阅国内外最新文献&#xff0c;这不仅要求文献具备权威性和相关性&#xff0c;还要追溯原始来…...

OpenClaw模型热更新方案:千问3.5-35B-A3B-FP8无缝升级

OpenClaw模型热更新方案&#xff1a;千问3.5-35B-A3B-FP8无缝升级 1. 为什么需要模型热更新&#xff1f; 上周我在本地部署的千问3.5-32B模型突然开始频繁报错——新发布的API文档解析任务完全无法执行。查看日志才发现&#xff0c;模型对某些专业术语的理解已经落后于最新技…...

RocketMQ 5.1与SpringBoot3兼容性指南:从报错分析到完美避坑的全流程

RocketMQ 5.1与SpringBoot3兼容性实战&#xff1a;从报错解析到完美集成的技术指南 最近在技术社区看到不少开发者反馈SpringBoot3集成RocketMQ时遇到的兼容性问题。作为一个经历过这个"坑"的过来人&#xff0c;我决定把完整的排查思路和解决方案整理出来。这个问题看…...

3大核心功能让WeChatMsg成为Mac微信数据管理专家

3大核心功能让WeChatMsg成为Mac微信数据管理专家 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 在数字…...

中文文献管理高效解决方案:Jasminum插件全方位应用指南

中文文献管理高效解决方案&#xff1a;Jasminum插件全方位应用指南 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件&#xff0c;用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究与文…...

N_m3u8DL-CLI-SimpleG:面向普通用户的M3U8视频下载图形化解决方案

N_m3u8DL-CLI-SimpleG&#xff1a;面向普通用户的M3U8视频下载图形化解决方案 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在流媒体内容日益普及的今天&#xff0c;M3U8格式作…...

Elsevier Tracker:三步搞定学术投稿焦虑,你的论文审稿终极监控方案

Elsevier Tracker&#xff1a;三步搞定学术投稿焦虑&#xff0c;你的论文审稿终极监控方案 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 还在为 Elsevier 期刊投稿后的漫长等待而焦虑吗&#xff1f;每天手动刷新页…...

Ostrakon-VL-8B多场景落地:药房药品陈列合规检查自动化方案

Ostrakon-VL-8B多场景落地&#xff1a;药房药品陈列合规检查自动化方案 1. 项目背景与价值 在零售药店日常运营中&#xff0c;药品陈列合规检查是一项重要但繁琐的工作。传统人工巡检方式存在效率低、标准不统一、记录不完整等问题。Ostrakon-VL-8B多模态大模型为解决这一问题…...

用ESP32和SSD1680驱动墨水屏,手把手教你做个低功耗电子价签原型

用ESP32和SSD1680打造低功耗电子价签&#xff1a;从硬件选型到云端更新全解析 在零售场景中&#xff0c;电子价签正逐步取代传统纸质标签&#xff0c;成为数字化门店的标配。而基于ESP32和SSD1680驱动墨水屏的方案&#xff0c;凭借其超低功耗、无线更新和低成本优势&#xff0c…...

Wan2.2-I2V-A14B开发者案例:集成API构建私有视频创作SaaS平台

Wan2.2-I2V-A14B开发者案例&#xff1a;集成API构建私有视频创作SaaS平台 1. 项目背景与价值 在当今内容创作领域&#xff0c;视频内容的需求呈现爆发式增长。传统视频制作流程需要专业设备和技能&#xff0c;耗时耗力。Wan2.2-I2V-A14B文生视频模型的出现&#xff0c;为内容…...