当前位置:网站首页>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”
边栏推荐
猜你喜欢
![[noi Simulation Competition] scraping (dynamic planning)](/img/ee/27a07f80207a2925f5065e633eb39f.png)
[noi Simulation Competition] scraping (dynamic planning)

19_Redis_宕机后手动配置主机

Kityformula editor configure font size and spacing

Btrace- (bytecode) dynamic tracking tool

N皇后问题的解决

LeetCode 2310. The number of digits is the sum of integers of K

03_线性表_链表

GeoServer offline map service construction and layer Publishing

XML配置文件

LeetCode - 搜索二维矩阵
随机推荐
Fundamentals of software testing
表格响应式布局小技巧
Base64 coding can be understood this way
C thread transfer parameters
Printf function and scanf function in C language
03_線性錶_鏈錶
[untitled] leetcode 2321 Maximum score of concatenated array
06_栈和队列转换
05_队列
Tidb data migration scenario overview
Error: NPM warn config global ` --global`, `--local` are deprecated Use `--location=global` instead.
C # delay, start the timer in the thread, and obtain the system time
Tidb hybrid deployment topology
使用 TiUP 部署 TiDB 集群
About text selection in web pages and counting the length of selected text
MFC CString 转 char*
C#延时、在线程中开启定时器、获取系统时间
TiDB数据迁移场景综述
Li Chuang EDA learning notes 15: draw border or import border (DXF file)
C# 线程传参