当前位置:网站首页>13_Redis_事务
13_Redis_事务
2022-07-02 12:00:00 【听*雨声】
事务
Mysql:ACID
原子性:要么同时成功,要么同时失败
Redis事务本质︰一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行!
特性:
- 一次性:一组命令会在一个队列中一次性执行
- 顺序性:一组命令按照顺序执行
- 排他性:事务在执行的过程中是不允许被别人打断的
Redis事务没有没有隔离级别的概念!
所有的命令在事务中,并没有直接被执行!只有发起执行命令的时候才会执行!Exec
Redis单条命令是保证原子性的,但是事务不保证原子性!
redis的事务∶
- 开启事务(muti)
- 命令入队(…)
- 执行事务 (exec)
事务操作
正常执行事务
127.0.0.1:6379> multi // 开启事务
OK
127.0.0.1:6379(TX)> set k1 v1 // 命令入队
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> get k1
QUEUED
127.0.0.1:6379(TX)> set k3 v3
QUEUED
127.0.0.1:6379(TX)> exec //执行事务
1 ) OK
2 ) OK
3 ) “v1”
4 ) OK
放弃事务
127.0.0.1:6379(TX)> set k1 v11
QUEUED
127.0.0.1:6379(TX)> set k2 v22
QUEUED
127.0.0.1:6379(TX)> set k4 v4
QUEUED
127.0.0.1:6379(TX)> DISCARD // 取消事务
OK
127.0.0.1:6379> get k4 // 事务队列中命令都不会被执行!
(nil)
事务异常
编译型异常(代码有问题!命令有错!),事务中所有的命令都不会被执行!
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set k1 v1
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> set k3 v3
QUEUED
127.0.0.1:6379(TX)> getset k2 // 错误的命令
(error) ERR wrong number of arguments for ‘getset’ command
127.0.0.1:6379(TX)> set k4 v4
QUEUED
127.0.0.1:6379(TX)> exec // 执行事务报错! 所有的命令都不会被执行!
(error) EXECABORT Transaction discarded because of previous errors.
运行时异常( 1/0),如果事务队列中存在语法性,那么执行命令的时候,其他命令是可以正常执行的,错误命令抛出异常!(也就是说事务没有原子性)
127.0.0.1:6379> set k1 “v1”
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> INCR k1 // 字符串是不能加一操作的
QUEUED
127.0.0.1:6379(TX)> set k2 v2
QUEUED
127.0.0.1:6379(TX)> set k3 v3
QUEUED
127.0.0.1:6379(TX)> get k3
QUEUED
127.0.0.1:6379(TX)> exec
1 ) (error) ERR value is not an integer or out of range // 虽然第一条命令报错了,但是依旧正常执行成功了!
2 ) OK
3 ) OK
4 ) “v3”
127.0.0.1:6379> get k2
“v2”
边栏推荐
- C语言中的printf函数和scanf函数
- Dragonfly low code security tool platform development path
- 17_Redis_Redis发布订阅
- Mavn builds nexus private server
- Topology architecture of the minimum deployment of tidb cluster
- How does CTO help the business?
- GeoServer offline map service construction and layer Publishing
- Table responsive layout tips
- [untitled] leetcode 2321 Maximum score of concatenated array
- 03_線性錶_鏈錶
猜你喜欢
MFC timer usage
vChain: Enabling Verifiable Boolean Range Queries over Blockchain Databases(sigmod‘2019)
Advanced C language (realize simple address book)
实用调试技巧
LeetCode - 搜索二维矩阵
LeetCode 2320. 统计放置房子的方式数
Introduction to C language -- array
【C语言】详解指针的初阶和进阶以及注意点(1)
List集合&UML图
[development environment] install the visual studio community 2013 development environment (download the installation package of visual studio community 2013 with update 5 version)
随机推荐
Leetcode - Search 2D matrix
C语言中的算术运算及相关练习题
C code audit practice + pre knowledge
Implementation of n queen in C language
MFC CString 转 char*
Add vector formula in rich text editor (MathType for TinyMCE, visual addition)
C language exercises - (array)
LeetCode 2320. Count the number of ways to place the house
Tidb environment and system configuration check
哈夫曼树:(1)输入各字符及其权值(2)构造哈夫曼树(3)进行哈夫曼编码(4)查找HC[i],得到各字符的哈夫曼编码
学习使用php实现公历农历转换的方法代码
MFC A对话框调用B对话框函数并传参
學習使用php實現公曆農曆轉換的方法代碼
GeoServer offline map service construction and layer Publishing
Tidb cross data center deployment topology
AtCoder Beginner Contest 254
Practice of compiling principle course -- implementing an interpreter or compiler of elementary function operation language
Practical debugging skills
C# richTextBox控制显示最大行数
使用 TiUP 部署 TiDB 集群