Redis事务回滚深入

对于 Redis 而言,不单单需要注意其事务处理的过程,其回滚的能力也和数据库不太一样,这也是需要特别注意的一个问题——Redis 事务遇到的命令格式正确而数据类型不符合,如图所示。
在这里插入图片描述
从图中可知,我们将 key1 设置为字符串,而使用命令 incr 对其自增,但是命令只会进入事务队列,而没有被执行,所以它不会有任何的错误发生,而是等待 exec 命令的执行。

当 exec 命令执行后,之前进入队列的命令就依次执行,当遇到 incr 时发生命令操作的数据类型错误,所以显示出了错误,而其之前和之后的命令都会被正常执行。注意,这里命令格式是正确的,问题在于数据类型,对于命令格式是错误的却是另外一种情形,如图所示。

在这里插入图片描述

从图中可以看到我们使用的 incr 命令格式是错误的,这个时候 Redis 会立即检测出来并产生错误,而在此之前我们设置了 key1,在此之后我们设置了 key2。当事务执行的时候,我们发现 key2 的值为空,说明被 Redis 事务回滚了。

通过上面两个例子,可以看出在执行事务命令的时候,在命令入队的时候,Redis 就会检测事务的命令是否正确,如果不正确则会产生错误。无论之前和之后的命令都会被事务所回滚,就变为什么都没有执行。

当命令格式正确,而因为操作数据结构引起的错误,则该命令执行出现错误,而其之前和之后的命令都会被正常执行。

对于一些重要的操作,我们必须通过程序去检测数据的正确性,以保证 Redis 事务的正确执行,避免出现数据不一致的情况。Redis 之所以保持这样简易的事务,完全是为了保证移动互联网的核心问题——性能。

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

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

相关文章

计算机辅助设计的发展及应用,计算机辅助设计的发展与应用

计算机维普资讯 http://doc.xuehai.net第 1卷第 34 2、期19 98年 9月株洲工学院学报V 11 o34 o 2N .、 .J OURNAL OF HUZ Z HOU NS TUTE OF TEC I TI HNOL OGY S p 1 9 e .98⑦计算机辅助设计的发展与应用7摘要廖建勇(洲工学院株株洲 420) 1 0 87讨论计算机辅助设计( AD) c技术…

Java 画圆

Java控制台画圆 画空心圆 完整代码: //空心圆 import java.util.Scanner; class circle2 { public static void main(String[] args) { new circle2().print();} //画圆函数void print() {System.out.println("输入半径:"); Sca…

智能控制和计算机控制的区别,解析智能控制技术是什么及与传统控制的区别

描述智能控制是什么智能控制(intelligent controls)在无人干预的情况下能自主地驱动智能机器实现控制目标的自动控制技术。对许多复杂的系统,难以建立有效的数学模型和用常规的控制理论去进行定量计算和分析,而必须采用定量方法与定性方法相结合的控制方…

C++ 画直线

使用C画直线 完整代码 #include "graphics.h" int main() {int driver,mode,i;float x0,y0,y1,x1;float j12,k;driverVGA;modeVGAHI;initgraph(&driver,&mode,"");setbkcolor(GREEN);x0263;y0263;y1275;x1275;for(i0;i<18;i){setcolor(5);lin…

计算机系统性错误,《深入理解计算机系统-异常》

现代操作系统通过使控制流发生突变来对某些意外情况(磁盘读写数据准备就绪、硬件定时器产生信号等)做出反应。一般而言&#xff0c;我们把这些突变命名为异常控制流(Exceptional Contral Flow ECF)。异常控制流发生在计算机系统的各个层次。比如&#xff0c;在硬件层&#xff0…

C 画矩形

使用C画矩形 使用C语言的相关知识在控制台输出一个矩形。 完整代码 #include "graphics.h" int main() {int x0,y0,y1,x1,driver,mode,i;driverVGA;modeVGAHI;initgraph(&driver,&mode,"");setbkcolor(YELLOW);x0263;y0263;y1275;x1275;for(i0;…

C++ 画圆

C画圆 使用C技术在控制台输出一个圆形。 完整代码 # define PAI 3.1415926 # define B 0.809 # include "graphics.h" #include "math.h" int main() {int i,j,k,x0,y0,x,y,driver,mode;float a;driverCGA;modeCGAC0;initgraph(&driver,&mode,&…

C 画图

使用C语言画图 使用C语言相关知识画图。 完整代码 #include "graphics.h" #define LEFT 0 #define TOP 0 #define RIGHT 639 #define BOTTOM 479 #define LINES 400 #define MAXCOLOR 15 int main() {int driver,mode,error;int x1,y1;int x2,y2;int dx1,dy1,dx2,…

C 杨辉三角形

使用C语言实现杨辉三角形 C语言使用循坏输出10行的杨辉三角形。 完整代码&#xff1a; #include <stdio.h>int main() {int i,j;int a[10][10];printf("\n");for(i0;i<10;i) {a[i][0]1;a[i][i]1;}for(i2;i<10;i)for(j1;j<i;j)a[i][j]a[i-1][j-1]a[…

计算机项目开发流程,产品开发项目建议流程图怎样画

产品开发项目建议流程图怎样画2019-01-14 10:30:270点赞3收藏0评论每一个新产品即将问世的时候会对其进行一系列的测试&#xff0c;测试的结果以及需要更改的地方我们会用表格将其整理起来&#xff0c;流程图就是一个比较实用的图表&#xff0c;可以清晰的看到整件事情的操作流…

C 画点

C语言画点 使用C语言画点。 完整代码 #include "stdio.h" #include "graphics.h" int main() {int i,j,driverVGA,modeVGAHI;initgraph(&driver,&mode,"");setbkcolor(YELLOW);for(i50;i<230;i20)for(j50;j<230;j)putpixel(i,j…

C 画椭圆

C语言画圆 使用C语言画椭圆。 完整代码 #include "stdio.h" #include "graphics.h" #include "conio.h" int main() {int x360,y160,driverVGA,modeVGAHI;int num20,i;int top,bottom;initgraph(&driver,&mode,"");topy-30…

C++ 画图

使用C画图 C实现画图&#xff0c;采用ellipse and rectangle实现。 完整代码 #include "stdio.h" #include "graphics.h" #include "conio.h" main() {int driverVGA,modeVGAHI;int i,num15,top50;int left20,right50;initgraph(&driver,…

计算机办公价格,公职人员,你的办公电脑最少要用6年,而价格不能超过这个数?...

小王&#xff0c;是个公职人员&#xff0c;每天的工作&#xff0c;都离不开电脑。可是&#xff0c;他的电脑最近似乎不太给力&#xff0c;而且动不动就死机。有一次&#xff0c;领导在开会前&#xff0c;着急要个发言材料&#xff0c;就把这活安排给了小王。还有一个小时&#…

C 画美丽的图案

C语言画图案 使用C语言技术画一个美丽的图案在控制台输出。 完整代码 #include "graphics.h" #include "math.h" #include "dos.h" #include "conio.h" #include "stdlib.h" #include "stdio.h" #include &quo…

flume 写入文件服务器,Flume环境配置以及基本操作

flume的作用是从接受外界的日志信息&#xff0c;然后输出到本地的一个框架。agent是Flume很重要的组成&#xff0c;包括有source&#xff0c;channel&#xff0c;sink。source是从外部接受日志。channel跟内存相似&#xff0c;读满了之后再写到sink中。sink是将数据写到本地&am…

C 字符串个数

C语言求字符串个数。 使用C语言获取输入的字符串并计算字符串的个数在控制台输出显示字符串个数。 完整代码 #include <stdio.h> #include <stdlib.h> int main() {int len;char str[20];printf("请输入字符串:\n");scanf("%s",str);lenlen…

Redis发布订阅模式

使用银行卡消费的时候&#xff0c;银行往往会通过微信、短信或邮件通知用户这笔交易的信息&#xff0c;这便是一种发布订阅模式&#xff0c;这里的发布是交易信息的发布&#xff0c;订阅则是各个渠道。这在实际工作中十分常用&#xff0c;Redis 支持这样的一个模式。 发布订阅…

Redis的超时命令和垃圾回收策略

正如 Java 虚拟机&#xff0c;它提供了自动 GC&#xff08;垃圾回收&#xff09;的功能&#xff0c;来保证 Java 程序使用过且不再使用的 Java 对象及时的从内存中释放掉&#xff0c;从而保证内存空间可用。 当程序编写不当或考虑欠缺的时候&#xff08;比如读入大文件&#x…

小米微信无法连接到服务器1-10087,微信无法连接到服务器【搞定方向】

win7系统电脑使用过程中有不少朋友表示遇到过微信无法连接到服务器的状况&#xff0c;当出现微信无法连接到服务器怎么样才能快速解决呢&#xff1f;其实解决微信无法连接到服务器也是非常简单的。网上有各种各样的解决方法&#xff0c;我给大家详细介绍一下关于微信无法连接到…