IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis事务 -> 正文阅读

[大数据]redis事务

官方说法:MULTIEXECDISCARDWATCH是 Redis 中事务的基础。它们允许在一个步骤中执行一组命令,有两个重要的保证

1 事务中的所有命令都被序列化并按顺序执行。Redis 事务的执行过程服务另一个客户端发出的请求永远不会发生。这保证了命令作为单个隔离操作执行

2?要么处理所有命令,要么不处理任何命令,因此 Redis 事务也是原子的。

用法:使用MULTI命令输入 Redis 事务。该命令始终以 回复OK。此时用户可以发出多个命令。Redis 不会执行这些命令,而是将它们排队。一旦调用EXEC,所有命令都会执行。

例:

从上面的会话中可以看出,EXEC返回一个回复数组,其中每个元素都是事务中单个命令的回复,与发出命令的顺序相同。

当 Redis 连接在MULTI请求的上下文中时,所有命令都将使用字符串QUEUED进行回复(从 Redis 协议的角度来看,作为状态回复发送)。当调用EXEC时,队列中的命令只是安排执行

事务中的错误

1 一个命令可能无法排队,所以在调用EXEC之前可能会出错。例如,该命令可能在语法上是错误的(参数数量错误,命令名称错误,...),或者可能存在一些紧急情况,例如内存不足情况(如果使用该maxmemory指令将服务器配置为具有内存限制)。

2?命令可能在?EXEC?调用之后失败

错误实例1?

错误实例2

?

为什么 Redis 不支持回滚?

只有在使用错误的语法(并且在命令排队期间无法检测到问题)或针对持有错误数据类型的键调用时,Redis 命令才会失败:这意味着实际上失败的命令是编程错误的结果,以及一种在开发过程中很可能被检测到的错误,而不是在生产中

Redis 内部简化且速度更快,因为它不需要回滚的能力?

一句话总结:redis认为这些错误是程序员自己造成的且无法避免。(有点装x的感觉)

丢弃命令队列

DISCARD可用于中止事务。在这种情况下,不执行任何命令

Watch 的事务

WATCH用于为 Redis 事务提供检查和设置 (CAS) 行为

WATCHed 密钥被监控以检测针对它们的更改。如果在执行 EXEC命令之前至少修改了一个监视键,则整个事务中止,并且EXEC返回Null 回复以通知事务失败

WATCH命令可以被调用多次。 对键的监视从 WATCH 执行之后开始生效, 直到调用 EXEC 为止

当?EXEC?被调用时, 不管事务是否成功执行, 对所有键的监视都会被取消。另外, 当客户端断开连接时, 该客户端对键的监视也会被取消

实例说明

?

使用unwatch命令可以手动取消对所有键的监视?

总结:

watch到底是什么

这是一个使EXEC有条件的命令:我们要求 Redis 仅在没有WATCH修改 ed 键的情况下执行事务。这包括客户端所做的修改,如写入命令,以及 Redis 本身所做的修改,如过期或驱逐。如果在WATCHed 和收到EXEC之间修改了密钥?,则整个事务将被中止

1 WATCH可以被多次调用。简单地说,所有的WATCH调用都将具有监视从调用开始到调用EXEC 的更改的效果。还可以将任意数量的键发送到单个WATCH调用?

2当EXEC被调用时,所有的键都会被UNWATCH编辑,不管事务是否被中止。此外,当客户端连接关闭时,一切都会被UNWATCH编辑

3也可以使用UNWATCH命令(不带参数)来刷新所有被监视的键??。有时这很有用,因为我们乐观地锁定了一些键,因为可能我们需要执行事务来更改这些键,但是在读取键的当前内容之后,我们不想继续。发生这种情况时,我们只需调用?UNWATCH以便连接可以自由地用于新事务

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:03:13  更:2022-01-14 02:04:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:22:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码