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

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

开发者学堂课程【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(注意周边的属性,例如时效)。

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

相关文章
|
6月前
|
Java 数据库连接 数据库
数据库系列课程(13)-事务传播机制、隔离级别、通知类型
数据库系列课程(13)-事务传播机制、隔离级别、通知类型
28 0
|
11月前
|
前端开发 关系型数据库 MySQL
用户重复注册分析-多线程事务中加锁引发的bug
用户重复注册分析-多线程事务中加锁引发的bug
122 0
|
SQL 存储 Oracle
精通Java事务编程(3)-弱隔离级别之快照隔离和可重复读
表面看,RC已满足事务所需的一切特征:支持中止(原子性),防止读取不完整的事务结果,并防止并发写的混乱。这点很关键!为我们的开发省去一大堆麻烦。
95 0
|
Java Spring
代码如何实现事务查询
代码如何实现
104 0
|
SQL 关系型数据库 MySQL
如何使用事务
如何使用事务
如何使用事务
|
SQL 物联网 数据库
基础DML(数据更新)知识点总结及实例讲解
基础DML(数据更新)知识点总结及实例讲解
146 0
基础DML(数据更新)知识点总结及实例讲解
|
关系型数据库 MySQL 数据库
数据库同步功能要慎用
数据库同步功能要慎用
64 0
|
NoSQL Redis 开发者
事务-事务的基本操作(定义,取消,执行)|学习笔记
快速学习事务-事务的基本操作(定义,取消,执行)
93 0
|
关系型数据库 MySQL
幻读“异常”引出的快照读创建点问题
幻读“异常”引出的快照读创建点问题
|
存储 SQL 关系型数据库
事务使用场景详解
事务使用场景详解
458 0
事务使用场景详解