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

Redis 事务 问题

前言


 相关系列

  • 《Redis & 目录》
  • 《Redis & 事务 & 源码》
  • 《Redis & 事务 & 总结》
  • 《Redis & 事务 & 问题》
     

 参考文献

  • 《Redis事务详解》
     
     

Redis事务是什么?


    标准的事务是指执行时具备原子性/一致性/隔离性/持久性的一系列操作。

  • 原子性:一系列操作要么一起成功,要么一起失败;
  • 一致性:保证事务执行前后的数据状态一致;
  • 隔离性:多事务并发执行时不会相互影响;
  • 持久性:事务递交后数据会被永久保存。

    Redis事务并不严格具备上述特性,因此将之单纯视为批处理其实更加合适,其唯一的作用就是确保一系列指令会被连续执行,即不会出现有其它指令间隔的情况。
 
 

Redis事务怎么使用?


    通过依次使用{MULTI} --> 一系列读/写 --> {EXEC}指令执行事务,而在事务未正式执行前可以通过{DISCARD}指令取消事务。此外为了避免事务的目标数据在执行过程中被其它事务/指令修改,还可以在开启事务前先通过{WATCH}指令监控指定键集,在键集中任意键的值被改动的情况下事务都将无法被执行。
 
 

Redis事务有几个阶段?


    事务有组队/执行两个阶段。组队阶段由{MULTI}指令开启,用于将后续输入的一系列读/写指令加入组队队列中;而执行阶段则由{EXEC}指令开启,负责执行组队队列中的所有指令。
 
 

Redis事务支持隔离性吗?


    隔离性不是一个有无的概念,因为事务之间无论是完全影响还是完全不影响都属于隔离性的范畴,因此隔离性实际上是程度高低的问题。那Redis事务又具备什么级别的隔离性呢?以MySQL的四个隔离级别来说其大概对应了“读已递交”级别的隔离性。那为什么是“读已递交”级别呢?这是因为事务被分为组队/执行两个阶段,而在这两个阶段中执行阶段虽说会串行执行,但组队阶段却是允许和其它组队/执行阶段并行执行的。因此处于组队阶段的事务其目标数据完全可能被其它处于执行阶段的事务所修改,从而出现事务执行结果错误的问题。那为什么说对应的是“读已递交”级别呢?这是因为Redis事务没有全局递交的概念,事务中每条执行的执行都可以视为一次递交,因此不符合“读未递交”的情景。
 
 

Redis事务保证原子性吗?是否支持回滚?


    Redis事务保证“伪”原子性。Redis事务有组队/执行两个阶段,在组队阶段中任意指令的语法错误都将导致整个事务拒绝被执行,因此事务在组队阶段是具备原子性的。但在执行阶段中指令的错误执行并不会对事务造成影响,事务依然会继续向后执行至彻底结束为止,因此事务在执行阶段时并不具备原子性,故而才说Redis事务只具备伪原子性,并且其也不支持回滚。
 
 

Redis事务有什么其它实现吗?


  • Redis可以通过Lua脚本保证脚本内的命令按顺序一次性执行,但同理其也不支持回滚;
  • 人为设置代表事务是否开始/结束的标记变量,并在正式执行前通过该变量确保无事务正在执行。

相关文章:

Redis 事务 问题

前言 相关系列 《Redis & 目录》《Redis & 事务 & 源码》《Redis & 事务 & 总结》《Redis & 事务 & 问题》 参考文献 《Redis事务详解》 Redis事务是什么? 标准的事务是指执行时具备原子性/一致性/隔离性/持久性的一系列操作。…...

Cpp学习手册-进阶学习

C标准库和C20新特性 C标准库概览: 核心库组件介绍: 容器: C 标准库提供了多种容器,它们各有特点,适用于不同的应用场景。 std::vector: vector:动态数组,支持快速随机访问。 #in…...

代码随想录-字符串-反转字符串中的单词

题目 题解 法一:纯粹为了做出本题,暴力解 没有技巧全是感情 class Solution {public String reverseWords(String s) {//首先去除首尾空格s s.trim();String[] strs s.split("\\s");StringBuilder sb new StringBuilder();//定义一个公共的字符反转…...

勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器

一个威胁行为者(或可能多个)使用 PSAUX 和其他勒索软件攻击了大约 22,000 个易受攻击的 Cyber​​Panel 实例以及运行该实例的服务器上的加密文件。 PSAUX 赎金记录(来源:LeakIX) Cyber​​Panel 漏洞 Cyber​​Pane…...

Open WebUI + openai API / vllm API ,实战部署教程

介绍Open WebUI + Ollama 的使用: https://www.dong-blog.fun/post/1796 介绍vllm 的使用:https://www.dong-blog.fun/post/1781 介绍 Ollama 的使用: https://www.dong-blog.fun/post/1797 本篇博客玩个花的,Open WebUI 本身可以兼容openai 的api, 那来尝试一下。 仅供…...

InsuranceclaimsController

目录 1、 InsuranceclaimsController 1.1、 保险理赔结算 1.2、 生成预约单号 1.3、 保存索赔表 InsuranceclaimsController using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections; using System.Collections.Generic; using System.Li…...

如何成为开源代码库Dify的contributor:解决issue并提交PR

前言 Dify 是一个开源的大语言模型(LLM)应用开发平台,它融合了后端即服务(Backend as Service)和LLMOps的理念,旨在简化和加速生成式AI应用的创建和部署。Dify提供了一个用户友好的界面和一系列强大的工具…...

SQL进阶技巧:巧用异或运算解决经典换座位问题

目录 0 问题描述 1 数据准备 2 问题分析 2.1 什么是异或 2.2异或有什么特性? 2.3 异或应用 2.4 本问题采用异或SQL解决方案 3 小结 0 问题描述 表 seat中有2个字段id和student id 是该表的主键(唯一值)列,student表示学生姓名。 该表的每一行都表示学生的姓名和 ID。…...

【MySQL】 运维篇—数据库监控:使用MySQL内置工具(如SHOW命令、INFORMATION_SCHEMA)进行监控

随着应用程序的增长,数据库的性能和稳定性变得至关重要。监控数据库的状态和性能可以帮助数据库管理员(DBA)及时发现问题,进行故障排查,并优化数据库的运行效率。通过监控工具,DBA可以获取实时的性能指标、…...

【温酒笔记】DMA

参考文档:野火STM32F103 1. Direct Memory Access-直接内存访问 DMA控制器独立于内核 是一个单独的外设 DMA1有7个通道DMA2有5个通道DMA有四个等级,非常高,高,中,低四个优先级如果优先等级相同,通道编号越…...

力扣判断字符是否唯一(位运算)

文章目录 给一个数n,判断它的二进制位中第x位是0还是1(从0开始计数)将一个数n的二进制位第X位修改为1(从0开始计数)将一个数n的二进制第x位修改为0(从0开始计数)提取一个数n二进制中最右侧的1去掉一个数n二进制表示中最右侧的1 今天我们通过判断字符是否唯一这个题来了解位运算…...

GPU和CPU区别?为什么挖矿、大模型都用GPU?

GPU(图形处理单元)和CPU(中央处理单元)是计算机中两种不同类型的处理器,它们在设计和功能上有很大的区别。 CPU是计算机的大脑,专门用于执行各种通用任务,如操作系统管理、数据处理、多任务处理等。它的架构设计旨在适应多种任务&#xff0c…...

新兴斗篷cloak技术,你了解吗?

随着互联网技术的飞速发展,网络营销领域也经历了翻天覆地的变革。 从最早的网络横幅广告到如今主流的搜索引擎和社交媒体营销,广告形式变得越来越多样。 其中,搜索引擎广告一直以其精准投放而备受青睐,但近年来,一项名…...

【抽代复习笔记】34-群(二十八):不变子群的几道例题

例1:证明,交换群的任何子群都是不变子群。 证:设(G,o)是交换群,H≤G, 对任意的a∈G,显然都有aH {a o h|h∈H} {h o a|h∈H} Ha。 所以H⊿G。 【注:规范的不变子群符号是一个顶角指向左边…...

Chrome和Firefox如何保护用户的浏览数据

在当今数字化时代,保护用户的浏览数据变得尤为重要。浏览器作为我们日常上网的主要工具,其安全性直接关系到个人信息的保密性。本文将详细介绍Chrome和Firefox这两款主流浏览器如何通过一系列功能来保护用户的浏览数据。(本文由https://chrom…...

CentOS 7镜像下载

新版本系统镜像下载(当前最新是CentOS 7.4版本) CentOS官网 官网地址 http://isoredirect.centos.org/centos/7.4.1708/isos/x86_64/ http://mirror.centos.org/centos/7/isos/ 国内的华为云,超级快:https://mirrors.huaweiclou…...

opencv-windows-cmake-Mingw-w64,编译opencv源码

Windows_MinGW_64_OpenCV在线编译动态库,并使用在C项目: (mingw-w64 cmakegithub actions方案) 修改版opencv在线编译: 加入opencv-contrib库, 一起编译生成动态库,在线编译好的opencv动态库,可以下载使用.验证opencv动态库是否可用的模板项目,测试opencv动态库是否可用的模板…...

Puppeteer点击系统:解锁百度流量点击率提升的解决案例

在数字营销领域,流量和搜索引擎优化(SEO)是提升网站可见性的关键。我开发了一个基于Puppeteer的点击系统,旨在自动化地提升百度流量点击率。本文将介绍这个系统如何通过模拟真实用户行为,优化关键词排名,并…...

Kyber原理解析

Kyber是一种IND-CCA2安全的密钥封装机制。Kyber的安全性基于在模格(MLWE问题)中解决LWE问题的难度。Kyber的构造采⽤两阶段⽅法:⾸先介绍⼀种⽤来加密固定32字节⻓度的消息原⽂的IND-CPA安全性的公钥加密⽅案,我们称之为 CPAPKE&a…...

2024 CCF CSP-J/S 2024 第二轮认证 真题试卷

2024年信息学奥赛CSP-J2入门级复赛真题试卷 题目总数:4 总分数:400 编程题 第 1 题 问答题 扑克牌(poker) 【题目描述】 小 P 从同学小 Q 那儿借来一副 n 张牌的扑克牌。 本题中我们不考虑大小王,此时每张牌具有两个属性:花色和…...

all-MiniLM-L6-v2多场景实践:构建跨平台内容索引引擎

all-MiniLM-L6-v2多场景实践:构建跨平台内容索引引擎 1. 认识all-MiniLM-L6-v2:轻量高效的语义理解利器 all-MiniLM-L6-v2是一个专门为语义理解设计的轻量级模型,它能够将文本转换为具有语义含义的数字向量。简单来说,它就像是一…...

基于电流模型与磁链估算的异步电动机高速矢量控制系统设计

基于电流模型转子磁链估算的异步电动机有速度传感器矢量控制系统异步电机矢量控制玩得溜不溜,关键就看磁链估算准不准。今天咱们来唠唠基于电流模型的转子磁链估算方案,这可是带速度传感器的经典玩法。别被专业名词吓到,说白了就是既要电流模…...

SpringBoot 3.3 整合 AI 接口:5 分钟快速实现智能应用

为什么要做 SpringBoot 3.3 AI 整合? SpringBoot 3.3 作为最新稳定版,不仅强化了原生虚拟线程、AOT 编译等性能特性,还对 HTTP 客户端、配置体系做了轻量化优化。而当前 AI 应用的核心痛点之一就是快速落地——大多数开发者不需要从零搭建 …...

Kylin V10离线部署Ceph集群全攻略:从环境准备到故障排查

Kylin V10环境下Ceph集群离线部署实战指南 1. 离线部署Ceph集群的核心挑战与解决方案 在封闭网络环境中部署Ceph分布式存储系统,运维工程师面临三大核心挑战: 依赖隔离:传统在线部署依赖互联网获取软件包和容器镜像环境适配:国产操…...

从零开始!Vue3+SpringBoot前后端分离项目Docker部署实战(上):环境搭建与数据库容器化

📝 前言 最近我刚完成了一个“校园后勤维修工单管理系统”的全栈开发。项目采用了目前最主流的 技术栈:前端 Vue3 Vite,后端 Spring Boot MyBatis-Plus,数据库 MySQL 8.0。 随着项目顺利跑通,如何把这套系统优雅、稳…...

k6扩展开发终极指南:Go插件与JavaScript模块的深度集成

k6扩展开发终极指南:Go插件与JavaScript模块的深度集成 【免费下载链接】k6 A modern load testing tool, using Go and JavaScript - https://k6.io 项目地址: https://gitcode.com/GitHub_Trending/k6/k6 k6是一个现代化的负载测试工具,它巧妙地…...

终极Bootstrap前端框架指南:10个技巧快速构建响应式网站

终极Bootstrap前端框架指南:10个技巧快速构建响应式网站 【免费下载链接】bootstrap twbs/bootstrap: 是一个用于构建响应式和移动优先的 Web 应用的开源框架,提供了丰富的 UI 组件和工具。适合对 Web 开发、响应式设计和想要实现响应式 Web 应用的开发者…...

如何快速修复损坏视频:Untrunc终极视频修复指南

如何快速修复损坏视频:Untrunc终极视频修复指南 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾经遇到过珍贵的视频文件突然无法播放的绝望时刻…...

春联生成模型-中文-base详细步骤:从镜像加载到春联生成全流程

春联生成模型-中文-base详细步骤:从镜像加载到春联生成全流程 1. 快速了解春联生成模型 春联生成模型是达摩院AliceMind团队基于基础生成大模型开发的专门应用。这个模型有一个很实用的功能:你只需要输入两个字的祝福词,比如"吉祥&quo…...

如何用Yi Hack V3开源固件解决老摄像机智能化难题?完整指南

如何用Yi Hack V3开源固件解决老摄像机智能化难题?完整指南 【免费下载链接】yi-hack-v3 Alternative Firmware for Xiaomi Cameras based on Hi3518e Chipset 项目地址: https://gitcode.com/gh_mirrors/yi/yi-hack-v3 老旧小米摄像机功能单一、依赖云服务且…...