当前位置:网站首页>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”
边栏推荐
- Introduction to mathjax (web display of mathematical formulas, vector)
- Slashgear shares 2021 life changing technology products, which are somewhat unexpected
- Base64 编码原来还可以这么理解
- It's no exaggeration to say that this is the most user-friendly basic tutorial of pytest I've ever seen
- Mavn 搭建 Nexus 私服
- 21_Redis_浅析Redis缓存穿透和雪崩
- C语言中的printf函数和scanf函数
- MFC 定时器使用
- How to test tidb with sysbench
- LeetCode 2320. Count the number of ways to place the house
猜你喜欢

Application and practice of Jenkins pipeline

Btrace- (bytecode) dynamic tracking tool

List集合&UML图

The past and present lives of visual page building tools

Practice of compiling principle course -- implementing an interpreter or compiler of elementary function operation language
![[development environment] install the visual studio community 2013 development environment (download the installation package of visual studio community 2013 with update 5 version)](/img/7b/2c471c070a3faa981f70136603495a.jpg)
[development environment] install the visual studio community 2013 development environment (download the installation package of visual studio community 2013 with update 5 version)
![[noi Simulation Competition] scraping (dynamic planning)](/img/ee/27a07f80207a2925f5065e633eb39f.png)
[noi Simulation Competition] scraping (dynamic planning)

MFC 定时器使用

Mavn builds nexus private server

Table responsive layout tips
随机推荐
Wechat applet uses towxml to display formula
解决el-radio-group 回显后不能编辑问题
[noi simulation] Elis (greedy, simulation)
Map介绍
Advanced C language (learn malloc & calloc & realloc & free in simple dynamic memory management)
C#代码审计实战+前置知识
AtCoder Beginner Contest 254
数据库内容输出有问题怎么解决
LeetCode 2320. Count the number of ways to place the house
Mfc a dialog calls B dialog function and passes parameters
Edit the formula with MathType, and set it to include only mathjax syntax when copying and pasting
LeetCode 2310. 个位数字为 K 的整数之和
Introduction to C language -- array
[development environment] install the visual studio community 2013 development environment (download the installation package of visual studio community 2013 with update 5 version)
表格响应式布局小技巧
forEach的错误用法,你都学废了吗
2021-2022學年編譯原理考試重點[華僑大學]
Internet Explorer officially retired
Mavn 搭建 Nexus 私服
XML配置文件