文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-04-21 16:27

关注

(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

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

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命令中的拼写错误导致并导致错误并关闭了该事务:

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/ 如果你喜欢本文,请长按二维码,关注 分布式编程 .分布式编程
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯