(Redis基础教程之十) 如何在Redis中运行事务

(Redis基础教程之十) 如何在Redis中运行事务介绍 Redis是一个开源的内存中键值数据存储。Redis允许您计划一系列命令,然后一个接一个地运行它们,这一过程称为_transaction_。每个事务都被视为不间断且隔离的操作,以确保数据完整性…

(Redis基础教程之十) 如何在Redis中运行事务

本教程介绍了如何执行和取消交易,还包括一些与交易通常相关的陷阱的信息。

如何使用本指南

本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。

本指南中显示的命令已在运行Redis版本4.0.9的Ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装和保护Redis的步骤1进行操作。我们将通过使用Redis命令行界面运行它们来演示这些命令的行为。请注意,如果您使用其他Redis界面(例如Redli),则某些命令的确切输出可能会有所不同。redis-cli

另外,您可以提供一个托管的Redis数据库实例来测试这些命令,但是请注意,根据数据库提供者所允许的控制级别,本指南中的某些命令可能无法按所述方式工作。要配置DigitalOcean托管数据库,请遵循我们的托管数据库产品文档。然后,您必须 安装Redli 设置TLS隧道才能通过TLS连接到托管数据库。

Running Transactions

multi命令告诉Redis开始事务块。在执行exec命令之前,所有后续命令都将排队等待。

以下命令形成一个事务块。第一个命令启动事务,第二个命令设置一个包含值的字符串的键1,第三个命令将值增加1,第四个命令将其值增加40,第五个返回字符串的当前值,最后一个返回执行事务块:

multi
set key_MeaningOfLife 1
incr key_MeaningOfLife
incrby key_MeaningOfLife 40
get key_MeaningOfLife
exec

代码100分

运行后multiredis-cli将使用响应以下每个命令QUEUED。运行exec命令后,它将分别显示每个命令的输出:

代码100分Output1) OK
2) (integer) 2
3) (integer) 42
4) "42"

事务块中包含的命令按排队顺序依次运行。Redis事务是_原子的_,这意味着要么处理事务块中的每个命令(意味着它被视为有效命令并排队等待执行),要么不执行。但是,即使命令成功排队,执行时它仍然可能产生错误。在这种情况下,事务中的其他命令仍然可以运行,但是Redis将跳过导致错误的命令。有关更多详细信息,请参见了解事务错误的部分。

Canceling Transactions

要取消交易,请运行discard命令。这样可以防止任何先前排队的命令运行:

multi
set key_A 146
incrby key_A 10
discard


OutputOK

discard命令将连接恢复到正常状态,该状态告诉Redis像往常一样运行单个命令。您需要multi再次运行以告知服务器您正在开始另一笔交易。

Understanding Transaction Errors

某些命令可能无法排队,例如语法错误的命令。如果尝试对语法错误的命令进行排队,则Redis将返回错误。

下面的事务创建了一个名为的键key_A,然后尝试将其增加10。但是,incrby命令中的拼写错误导致并导致错误并关闭了该事务:

代码100分multi
set key_A 146
incrbuy key_A 10


Output(error) ERR unknown command "incrbuy"

如果exec在尝试将命令与类似语法错误的命令放入队列后尝试运行命令,则会收到另一条错误消息,告知您事务已被丢弃:

exec


Output(error) EXECABORT Transaction discarded because of previous errors.

在这种情况下,您需要重新启动事务块并确保正确输入每个命令。

一些不可能命令_是_可能的队列,例如运行incr在仅包含字符串的密钥。由于该命令在语法上是正确的,因此,如果您尝试将其包含在事务中,则Redis不会返回错误,也不会阻止您运行exec。在这种情况下,将执行队列中的所有其他命令,但不可能的命令将返回错误:

multi
set key_A 146
incrby key_A "ten"
exec


Output1) OK
2) (error) ERR value is not an integer or out of range

有关Redis如何处理事务内部错误的更多信息,请参阅关于此主题官方文档

Conclusion

本指南详细介绍了许多用于在Redis中创建,运行和取消事务的命令。如果您想在本指南中概述其他相关的命令,参数或过程,请在下面的评论中提出疑问或提出建议。

有关Redis命令的更多信息,请参阅关于如何管理Redis数据库的系列教程。

  1. 如何在ubuntu18.04上安装和保护redis
  2. 如何连接到Redis数据库
  3. 如何管理Redis数据库和Keys
  4. 如何在Redis中管理副本和客户端
  5. 如何在Redis中管理字符串
  6. 如何在Redis中管理list
  7. 如何在Redis中管理Hashes
  8. 如何在Redis中管理Sets
  9. 如何在Redis中管理Sorted Sets
  10. 如何在Redis中运行事务
  11. 如何使Redis中的Key失效
  12. 如何解决Redis中的问题
  13. 如何从命令行更改Redis的配置
  14. Redis数据类型简介 作者:分布式编程 出处:https://zthinker.com/ 如果你喜欢本文,请长按二维码,关注 分布式编程 .分布式编程

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8400.html

(0)
上一篇 2023-02-28
下一篇 2023-02-28

相关推荐

  • MySQL学习指南

    MySQL学习指南MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBM

    2023-04-17
    176
  • python通过ie浏览器(python打开ie)

    python通过ie浏览器(python打开ie)可以在cmd下通过命令安装selenium模块:pip install selenium 或者 easy_install selenium。

    2023-10-26
    148
  • 使用Redis Data Reveal(rdr)查看Redis中key占用内存空间[通俗易懂]

    使用Redis Data Reveal(rdr)查看Redis中key占用内存空间[通俗易懂]项目响应速度要求比较高,全部使用Redis缓存这也导致缓存。需要分析各种键占用内存情况进行优化。 redisclient虽然可以很方便的对redis进行操作,但不能查看对应key占用的内存情况,也无法

    2023-03-16
    152
  • oracle添加约束[亲测有效]

    oracle添加约束[亲测有效] //建测试表 create table dept( 部门表 deptno number(3) primary key, dname varchar2(10), loc varchar2(13…

    2023-03-27
    162
  • Python List中的最后一个元素

    Python List中的最后一个元素在Python中,List是一种有序的数据结构,它可以存储多个元素,这些元素可以是不同的数据类型,例如整数、字符串、布尔值、浮点数等等。可以将List看作是一个数组,它支持索引、切片、排序等常见操作。

    2024-01-02
    118
  • 如何检查 Python 版本

    如何检查 Python 版本Python是一个广泛使用的编程语言,但是在不同的项目中使用不同的Python版本可能会导致代码执行出现问题。因此,检查当前Python版本非常重要,以便在项目中使用正确的Python版本。

    2024-08-20
    26
  • Python字符串转义

    Python字符串转义随着Python的广泛应用,越来越多的开发者开始使用Python进行编程,而字符串操作是编程中最常见的操作之一。在Python中,字符串转义是必不可少的部分。本文将围绕这一话题展开探讨。

    2024-07-29
    33
  • CentOS6 用yum安装mysql详解,简单实用

    CentOS6 用yum安装mysql详解,简单实用一、查看CentOS下是否已安装mysql 输入命令 :yum list installed | grep mysql 二、删除已安装mysql 输入命令: yum -y remove mysql 如

    2023-01-24
    148

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注