事务操作的注意事项|学习笔记

简介: 快速学习事务操作的注意事项

开发者学堂课程【Redis 入门到精通(进阶篇)事务操作的注意事项】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13433


事务操作的注意事项

 

内容介绍

一、定义事务的过程中,命令格式输入错误的情况

二、定义事务的过程中,命令执行出现错误的情况

三、手动进行事务回滚

 

一、 定义事务的过程中,命令格式输入错误的情况

1.语法错误

指命令书写格式有误。

2.处理结果

如果定义的事务中所包含的命令存在语法错误,整体事务中所有命令均不会执行,包括那些语法正确的命令。

127.0.0.1:6379> flushdb

OK

127.0.0.1:6379> keys *

(empty list or set)

127.0.0.1:6379> multi

OK

127.0.0.1:6379> set name itheima

QUEUED

127.0.0.1:6379> get name

QUEUED

127.0.0.1:6379> tes name itcast

(error)ERR unknown command ‘tes’

127.0.0.1:6379>exec

(error)EXECABORT Transaction discarded because of previous errors.

 

二、 定义事务的过程中,命令执行出现错误的情况

1.运行错误

指命令格式正确,但是无法正确的执行,例如对list进行incr操作。

2.处理结果

能够正确运行的命令会执行,运行错误的命令不会被执行。

注:已经执行完毕的命令对应的数据不会自动回滚,需要程序员自己在代码中实现回滚。

127.0.0.1:6379>multi

OK

127.0.0.1:6379> set name itheima

QUEUED

127.0.0.1:6379> get name

QUEUED

127.0.0.1:6379> set name itcast

QUEUED

127.0.0.1:6379> get name

QUEUED

127.0.0.1:6379>lpush name a b c

QUEUED

127.0.0.1:6379> get name

QUEUED

127.0.0.1:6379> exec

1)OK

2)”itheima”

3)OK

4)”itcast”

5)(error)WRONGTYPE Operation against a key holding the wrong kind of value

6)”itcast”

 

三、手动进行事务回滚

1.记录操作过程中被影响的数据之前的状态

单数据:string 类型的获取该值。

多数据:hash、list、set、zset 类型的整个列表或数据拷贝一份。

2.设置指令恢复所有的被修改的项

单数据:直接 set(注意周边的属性,例如时效)。

多数据:修改对应值或整体克隆复制。

相关文章
|
SQL 监控 druid
强大的Druid
Druid数据库连接池介绍以及使用步骤
|
NoSQL 安全 Redis
深入了解Redis:配置文件、动态修改和安全设置
深入了解Redis:配置文件、动态修改和安全设置
1106 0
|
6月前
|
SQL 存储 关系型数据库
一、数据库和表的基本操作 DDL
在使用 MySQL 做项目或写业务逻辑时,离不开对数据库和数据表的基本操作。我们这次从创建数据库讲起,一步步带你掌握如何新建表、查看表结构、修改字段、重命名、删除等常用命令。每一个知识点都有示例代码可直接上手,还准备了一套完整的动手练习,帮助你把概念变成熟练技能。如果你刚入门 SQL,或者想系统梳理一遍 DDL 基础,这篇会是不错的起点。
430 1
|
Kubernetes Java 微服务
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
269 0
Spring Boot 单体应用一键升级成 Spring Cloud Alibaba(1)
|
9月前
|
存储 人工智能 关系型数据库
云数据库是什么数据库?
云数据库是部署在云计算环境中的数据库服务,用户无需自行搭建硬件和软件环境,通过互联网即可便捷使用。相比传统数据库,云数据库降低了成本和使用门槛,具备强大的扩展性和灵活性,支持多种数据存储模型,并借鉴了关系型数据库的特性如ACID事务处理。它能够应对海量数据和高并发访问需求,适应数字化时代的挑战,未来还将融合更多新技术,进一步提升其功能和应用范围。
738 2
shell中if else使用示例
该文档提供了多个bash脚本示例,通过`if`语句进行条件判断。示例包括判断字符串是否为空、整数的奇偶性和正负性、字符串间的大小比较、学生成绩合法性与及格判断、年份是否为闰年、文件类型(普通文件或目录)的识别以及文件权限(读、写、执行)的检查。每个示例均包含简单的用户输入和相应的输出反馈。
|
SQL Java Maven
idea如何建立一个springboot项目
idea如何建立一个springboot项目
323 0
|
NoSQL 安全 Shell
MongoDB 用户管理
10月更文挑战第12天
387 0
|
Java
【Java异常】Error:(30, 62) java: 程序包com.sun.org.apache.xerces.internal.impl.dv.util不存在
【Java异常】Error:(30, 62) java: 程序包com.sun.org.apache.xerces.internal.impl.dv.util不存在
1855 0
|
存储 NoSQL Redis
基于SpringBoot+Redis实现点赞/排行榜功能,可同理实现收藏/关注功能,可拓展实现共同好友/共同关注/关注推送功能
在SpringBoot项目中使用Redis的Set和ZSet集合实现点赞和排行榜功能,并通过示例代码展示了如何使用`stringRedisTemplate`操作Redis来完成这些功能。
902 0