{{format('0')}} {{format('416')}} {{format('1583')}}

【Redis】事务 [ 编程杂谈 ]

大数据男孩 文章 正文

想做一个技术博客,奈何实力不够
分享

明妃

{{nature("2022-08-14 17:23:19")}}更新

事务

什么是事务?

一次性 执行 多条 命令的过程

重要概念

Redis 单条命令是原子性的【一起成功,一起失败】

事务 不是 原子性,执行成功的成功,失败的报错。

事务的流程

一次性、顺序性、排他性

  • 一次性:一次执行完
  • 顺序性:按照队列顺序执行
  • 排他性:不允许被干扰
开始事务 ('multi')--> 
命令入队列 ('此时命令没有执行') --> 
执行事务 ('exec ')【按照顺序 执行命令】
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) "v2"
127.0.0.1:6379>

[mark]()

取消事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> discard
OK

事务的错误处理

编译型错误

事务添加了错误命令,在事务执行时会 报错, 整个事务都不会被执行

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set kk vv
QUEUED
127.0.0.1:6379> setget k5
(error) ERR unknown command `setget`, with args beginning with: `k5`,
127.0.0.1:6379> set k4 v4
QUEUED
127.0.0.1:6379> exec
(error) EXECABORT Transaction discarded because of previous errors.

[mark]()

运行时异常

逻辑错误,语法正确

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set kk vv
QUEUED
127.0.0.1:6379> incr k1
QUEUED
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> get k1
QUEUED
127.0.0.1:6379> exec
1) OK
2) (error) ERR value is not an integer or out of range
3) OK
4) "v1"

[mark]()

评论 0
0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}
TOP 2
Spark 2.0 单机模式与集群模式 安装

{{nature('2020-01-02 16:47:07')}} {{format('12641')}}人已阅读

TOP 3
Office 2016 Pro Plus 激活

{{nature('2019-12-11 20:43:10')}} {{format('9527')}}人已阅读

TOP 4
Linux上 MySQL 开启远程登陆的两种方法

{{nature('2019-12-26 17:20:52')}} {{format('7573')}}人已阅读

TOP 5
Linux 安装 MySQL 5.7

{{nature('2019-12-26 16:03:55')}} {{format('5017')}}人已阅读

目录

标签云

Redis

一言

# {{hitokoto.data.from || '来自'}} #
{{hitokoto.data.hitokoto || '内容'}}
作者:{{hitokoto.data.from_who || '作者'}}
自定义UI
配色方案

侧边栏