Redis(事务)

本篇博客中 Redis 事务是和 MySQL 事务对比来说的(要不我也不会了 …)


Redis 事务是什么?

Redis 事务的主要意义是 把命令打包在一起执行, 避免其他客户端在我执行一些命令的过程中 插队. ("秒杀"场景, "超卖"问题)


Redis 事务 与 MySQL 事务 对比

相比较于 MySQL 事务的特性 ACID :

  • Redis 事务的原子性: 把多个命令打包在一起, 要么全部执行, 要么全部不执行 (不保证执行成功, 如果中间有失败命令, 不影响其他命令的执行).
  • Redis 事务不具有一致性: Redis 事务没有约束, 也不具有回滚操作, 事务执行过程中如果某个操作出错, 就会造成事务执行前后数据库数据不一致.
  • Redis 事务不具备持久性: Redis 是 内存数据库 , 数据存储在内存中. (ps: Redis 持久化和事务机制没有半毛钱关系, 那是另一套 Redis 机制) .
  • Redis 事务不涉及隔离性: Redis 是单线程模型, 所有请求/命令/ 事务 , 均是串行执行.

Redis 事务的执行

Redis 事务的执行: 开启事务后, 先让出 Redis 主线程, 将命令放入事务队列, 等待命令全部集齐, 事务执行, 此时将队列中的命令放入主线程顺序执行(其他客户端阻塞, 不允许中间插队)


Redis 事务相关命令

开启事务: MULTI
事务执行: EXEC
放弃事务: DISCARD

WATCH key1 key2 ...
监控某个 key, 是否在事务开启后, 事务执行前, 发生了变化
如果发生了变化, 那么本次事务会被直接放弃掉 (事务执行失败)
watch 命令本质是给 exec 命令加了层判定条件, 内部基于 版本号 这样的机制实现 (类似 乐观锁 的效果 )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 切面的一种的测试方法,java中级开发面试

void afterReturnName() { Assertions.assertEquals(studentController.getNameById(123L).getName(), "测试姓名Yz");} } 但往往切面中的逻辑并非这么简单,在实际的测试中其实我们也完成没有必要关心在切面中到底发生了什么(发生了什么应该在…

正则问题【蓝桥杯】/dfs

正则问题 dfs 刚开始用的是栈&#xff0c;没有想到dfs… #include<iostream> #include<stack> using namespace std; string s; int pos; int dfs() {//ans表示到当前位置最多的x数目//num表示暂存的x数目int num0,ans0;while(pos<s.size()){if(s[pos](){pos;…

HarmonyOS实战开发-如何实现文件管理相关的功能。

介绍 本示例主要展示了文件管理相关的功能&#xff0c;使用ohos.multimedia.medialibrary 、ohos.filemanagement.userFileManager 、ohos.fileio 、ohos.file.fs、ohos.app.ability.contextConstant 等接口&#xff0c;实现了增添文件、删除文件、查找指定类型文件文件、复制…

oracle恢复异常处理

问题现象&#xff1a; RMAN> 2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 15> 16> 17> 18> 19> 20> 21> 22> 23> 24> using target database control file instead of recovery catalog allocate…

软件测试定义和分类

什么是软件 软件是计算机程序&#xff0c;程序所用的数据以及有关文档资料的集合。 软件是计算机的灵魂&#xff0c;软件又可分为两大类&#xff1a;系统软件和应用软件。 系统软件&#xff1a;系统软件是生成&#xff0c;准备和执行其他程序所需要的一组文件和程序。如操作…

论文阅读--Conservative Q-Learning for Offline Reinforcement Learning

摘要 在强化学习( RL )中有效地利用以前收集的大量数据集是大规模实际应用的关键挑战。离线RL算法承诺从先前收集的静态数据集中学习有效的策略&#xff0c;而无需进一步的交互。然而&#xff0c;在实际应用中&#xff0c;离线RL是一个主要的挑战&#xff0c;标准的离线RL方法…

数字化浪潮下,制造业如何乘势而上实现精益生产

随着数字化技术的迅猛发展&#xff0c;制造业正迎来前所未有的变革机遇。本文将探讨如何利用数字化手段助推制造业实现精益生产&#xff0c;从而在激烈的市场竞争中脱颖而出。 1、构建智能化生产系统 借助物联网技术&#xff0c;实现设备之间的互联互通&#xff0c;构建智能化…

CODEFORCES --- 1676A. Lucky?

1676A. Lucky? 彩票是由六位数字组成的字符串。如果前三位数字之和等于后三位数字之和&#xff0c;则视为幸运彩票。给定一张彩票&#xff0c;输出它是否幸运。请注意&#xff0c;彩票可以有前导零。 输入 输入的第一行包含一个整数 t ( 1≤t≤103 ) - 测试用例的数量。 每…

腾讯云云原生数据库TDSQL-C mysql 以及项目怎么接入

要接入腾讯云的云原生数据库TDSQL-C的MySQL版本&#xff0c;并将它用于你的项目中&#xff0c;你需要按照以下步骤进行&#xff1a; 创建TDSQL-C的MySQL数据库实例&#xff1a; 登录腾讯云控制台。在产品搜索框中搜索TDSQL-C&#xff0c;然后选择它。在TDSQL-C的产品页面上&…

【爬虫】在Scrapy中配置随机User-Agent中间件

祝福这个快要漫出来的杯子吧&#xff0c;让杯里的水变得金光灿烂地流出&#xff0c;把反映你的喜悦的光送往各处! &#x1f3b5; 罗老师《查拉图斯特拉的前言_漾水》 在网络爬虫开发中&#xff0c;合理使用User-Agent&#xff08;UA&#xff09;是绕过服务…

Linux函数学习 select

1、Linux select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); nfds 最大文件fd 1 readfds 监听可读文件集合fd writefds 监听可写文件集合fd exceptfd 监听异常文件集…

数据结构--循环链表

一.循环链表的设计 1.循环链表的结构设计: typedef struct CNode{ int data; struct CNode* next; }CNode ,*CList; 2.循环链表的示意图: 3.循环链表和单链表的区别: 唯一区别,没有空指针,尾节点的后继为头,为循环之意. 二.循环链表的实现 //初始化free(q);return true; …

Pandas的测试关键词云

文章目录 前言一、pandas是什么&#xff1f; 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了学习机器学习&#xff0c;本文就介绍了机器学…

git 拉取项目时切换账号密码

一般拉取线上代码的先 1.git clone 2.在输入用户名 3.输入密码 等三步操作,这样子太麻烦了 直接一步操作 git clone http://用户名:密码地址 1 例子 如果你用户叫123xxx 密码是mypassword 地址是git.xxx.com/www.git git clone http://123xxx:mypasswordgit.xxx.com/www.git注…

Spring boot 入门 ---(一),2024年最新java进阶训练营

spring-snapshots http://repo.spring.io/snapshot spring-milestones http://repo.spring.io/milestone spring-boot-starter-parent是使用Spring Boot的一种不错的方式&#xff0c;但它 并不总是最合适的。有时你可能需要继承一个不同的父POM&#xff0c;或只是不喜欢我…

集成sharding-jdbc实现分库分表

集成sharding-jdbc实现分库分表 sharding-jdbc是由当当捐入给apache的一款分布式数据库中间件&#xff0c;支持垂直分库、垂直分表、水平分库、水平分表、读写分离、分布式事务和高可用等相关功能。 1、ruoyi-framework\pom.xml模块添加sharding-jdbc整合依赖 <!-- shard…

自己写的组件中使用v-model双向绑定

这里的时间选择表单是我写的一个组件&#xff0c;我想用v-model获取到实时的ref值。 代码&#xff1a; //父组件<TimePickerModal v-model:value"time" label-text"计划客面时间" /> const time ref(2024-04-09 15:20:00);//子组件<template>…

基于Springboot中小企业设备管理系统设计与实现(论文+源码)_kaic

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…

题目:画图,学用rectangle画方形。

题目&#xff1a;画图&#xff0c;学用rectangle画方形。    There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about bei…

Open CASCADE学习|求曲面的参数空间

在三维空间中&#xff0c;任意的曲面都可以通过特定的方法映射到一个二维参数平面上&#xff0c;从而对其进行详细的几何分析和处理。首先&#xff0c;我们需要从三维模型中提取出特定的曲面&#xff0c;这通常被称为“Face”。一个face可以被视为三维空间中的一个封闭区域&…