Redis的事务

news/2024/12/22 20:53:29/

Redis的事务

1. 是什么?

Redis事务可以一次执行多个命令,本质是一组命令的集合

一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞

2. 能干嘛

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

3. Redis事务 VS MySQL事务

在这里插入图片描述

4. Redis事务命令

在这里插入图片描述

multi//开启事务
set k1 v1
set k2 v2 
set k3 v3
exex//提交事务
discaer//放弃事务

5. 事务操作异常处理

全体连坐

当事务操作开启时,执行的redis命令有语法异常,那么整个事务都会执行失败

冤头债主

当语句没有语法错误,但当执行时发现是错误的语句,那么错误语句之前的都会正常执行,之后的也会正常执行

6. watch监控

redis使用watch来提供乐观锁锁定,类似于CAS

乐观锁: 每次去拿数据的时候都认为别人不会修改,所以不会上锁,但在更新的时候会判断一下此期间别人有没有更新这个数据

乐观锁策略: 提交版本必须大于记录当前版本才能执行更新

redis中的策略:

被监控的key如果在事务未被提交期间被修改,那么该条事务中的所有命令都不会被执行,并返回Null

在这里插入图片描述

7. unwatch

UNWATCH是Redis中的一个命令,用于取消当前客户端已经监视的所有key。如果一个客户端正在执行一个带有WATCH命令的事务,那么这个客户端可以在事务执行之前使用UNWATCH命令来取消对所有key的监视。这样,在事务执行期间,即使其他客户端修改了被监视的key,Redis也不会回滚当前客户端的事务。

总的来说,UNWATCH命令可以帮助开发者避免因为文件被修改而无法成功执行事务的情况,并且如果客户端需要在执行事务之前取消对一些WATCH的key进行监控,那么使用UNWATCH命令可以很方便地达到这个目的。

消对一些WATCH的key进行监控,那么使用UNWATCH命令可以很方便地达到这个目的。


http://www.ppmy.cn/news/48214.html

相关文章

FTP上传下载

这里FTP上传使用的是: commons-net:commons-net:3.6 首先登录 FTPClient client new FTPClient();// 连接FPT服务器,设置IP及端口client.connect(host地址, port端口);client.login(userName用户名, passWord密码);client.changeWorkingDirectory(filePath文件夹…

Django | 一文完美解决admin增加新用户只有用户名密码和确认密码的问题

文章目录 如图所示,下面给出解决方案: 如果您使用 使用 Django 默认的后台管理界面添加用户时,只看到了三个字段(通常是 username、password和 repassword),那么可以通过定义 add_fieldsets 属性来增加更多…

【eXtplorer】本地搭建免费在线文件管理器并实现在外远程登录

文章目录 1. 前言2. eXtplorer网站搭建2.1 eXtplorer下载和安装2.2 eXtplorer网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1. 前言 通过互联网传输文件,是互联网最重要的应用之一,无论是…

我把Solon打包成了native image,速度快的惊人

我刚开始对 Solon 感兴趣的原因,就是启动快、包体积小,用了一段时间之后,发现 Solon 使用 GraalVM native iamge 打包有一些问题,我把问题发到 Solon 用户群里,作者告诉我 Solon 的原生编译还 beat 阶段,只…

内存管理、内存映射、mmap

内存管理 MMU:Memory Management Unit,内存管理单元,CPU中独立硬件,负责处理CPU的内存访问请求。虚拟地址到物理地址的转换(即虚拟内存管理)。 物理内存:真实存在的插在主板内存槽上的内存条&a…

C# 类库打包推送到nuget

步骤1:注册nuget 账号,可以使用outlook邮箱进行注册 步骤2:建立 apikey 名字自己起,Glob Pattern 填入“*” 步骤3:把程序打包,打包很简单右键vs2022 打包就好 但是注意*.csproj 文件修改,修改目的是为了…

python 操作CAD 二次开发 相关函数

import win32com.client as win32#输出dwg文件 from pyautocad import Autocad#输出dwg文件 import numpy as np#输出dwg文件 import pywin32 #输出dxf文件 import ezdxf #输出dxf文件 #打开CAD AutoCAD.Application.18 为 2010版本 #AutoCAD.Application.19 为 2014版本 #Au…

Python 使用pipreqs命令生成 `requirements.txt`报错

Python 使用pipreqs命令生成 requirements.txt报错:Fatal error in launcher: Unable to create process using ‘“E:\Anaconda\python.exe” “D:\Anaconda\Scripts\pipreqs.exe” ./ --encodingutf-8’: ??? 问题描述—Python 使用pipreqs命令生成 requireme…