【2023】Redis事务

这篇具有很好参考价值的文章主要介绍了【2023】Redis事务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是Redis事务

Redis事务是一组命令的集合,这些命令要么全部执行,要么全部不执行。它们被视为一个单独的操作单元,要么完全成功,要么完全失败。
Redis事务可以用来实现ACID属性(原子性、一致性、隔离性、持久性)。

ACID是一组属性的缩写:

1️⃣:原子性,是指一个Redis事务中的所有操作要么全部完成,要么全部不完成;
2️⃣:一致性是指在事务开始和结束时,数据库的状态必须是一致的;
3️⃣:隔离性是指多个事务之间的操作是相互独立的,不会相互干扰;
4️⃣:持久性是指事务的操作必须被持久化到磁盘上,即使在发生故障时也能恢复数据库状态。

Redis事务通常用于以下几个方面:

1️⃣: 批量操作:使用事务可以将多个操作放在同一批次中执行,以减少网络延迟和服务器负载。这在需要执行多个操作来更新相同数据集的情况下特别有用。

2️⃣:原子性:在事务中执行的所有操作要么全部执行成功,要么全部失败回滚。这种原子性保证了在并发环境下的数据一致性。

3️⃣:锁定操作:事务可以获得锁定某些键,以确保在整个事务执行期间该键不被其他客户端修改。

4️⃣:消息队列:使用Redis事务队列可以将多个命令作为一个原子操作处理,从而在保证数据一致性的同时实现消息队列功能。

总之,Redis事务提供了一种灵活的方式来执行多个操作,保证数据的一致性、并发性和可靠性。

2.Redis事务相关命令

  • multi:开始一个新的redis事务
  • exec:执行一个或多个命令(作为事务结束)
  • discard:放弃当前事务,回滚所有已执行命令
  • commit:提交当前redis事务,确保所有命令执行或不执行是一个整体

3.Redis事务相关示例

通过multi创建一个事务:

  • 普通方式创建一个键值对,返回结果为“OK”
127.0.0.1:6379> set age 20
OK
  • 通过事务方式创建
127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set name 'zhangsan'
QUEUED
127.0.0.1:6379(TX)> get name
QUEUED
127.0.0.1:6379(TX)> set id 001
QUEUED
127.0.0.1:6379(TX)> exec
1) OK
2) "zhangsan"
3) OK

通过multi创建一个事务,事务内执行三条命令,返回结果均为QUEUED,exec会执行事务,并返回该事务内所有执行结果。

通过discard命令撤销事务中的操作:

127.0.0.1:6379> multi
OK
127.0.0.1:6379(TX)> set name1 'yyang'
QUEUED
127.0.0.1:6379(TX)> set age1 24
QUEUED
127.0.0.1:6379(TX)> discard
OK
127.0.0.1:6379> get name1
(nil)
127.0.0.1:6379> get age1
(nil)

事务内操作要么全都做,要么全不做。
通过multi开始一个事务,里面执行两次set,在执行撤销命令后,用get查找键发现是空。

4.Redis持久化与事务持久性关系

Redis持久化是指将Redis数据存储到磁盘上,以保证在重启Redis服务器或发生故障时能够恢复数据库状态。Redis持久化可以使用RDB和AOF两种持久化策略之一,其中RDB持久化使用二进制日志记录数据,而AOF持久化使用追加日志记录数据。

事务持久性是指将一组命令的执行结果存储到磁盘上,以确保在发生故障时能够恢复这些命令的执行结果。事务持久性是通过在每个事务开始和结束时使用SAVE和BGSAVE命令来实现的,这些命令会将事务的执行结果存储到数据库中。

在Redis事务中,如果所有命令的执行都是原子性的,那么所有操作的执行结果都会被自动保存到磁盘上,即使在发生故障时也能恢复事务的执行结果。因此,事务持久性可以通过使用Redis持久化来实现。但是,如果某个命令的执行结果不是原子性的,那么在发生故障时可能无法恢复这些命令的执行结果,因此需要使用事务持久化。

因此,在使用Redis时,建议同时使用Redis持久化和事务持久化,以确保在发生故障时能够恢复数据库状态和命令执行结果。文章来源地址https://www.toymoban.com/news/detail-492179.html

到了这里,关于【2023】Redis事务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023-06-23:redis中什么是缓存击穿?该如何解决?

    2023-06-23:redis中什么是缓存击穿?该如何解决? 答案2023-06-23: 缓存击穿是指一个缓存中的热点数据非常频繁地被大量并发请求访问,当该热点数据失效的瞬间,持续的大并发请求无法通过缓存获取到数据,而直接访问数据库,这就好像在一个稳固完好的容器上打开了一个洞

    2024年02月10日
    浏览(41)
  • 2023-06-03:redis中pipeline有什么好处,为什么要用 pipeline?

    2023-06-03:redis中pipeline有什么好处,为什么要用 pipeline? 答案2023-06-03: Redis客户端执行一条命令通常包括以下四个阶段: 1.发送命令:客户端将要执行的命令发送到Redis服务器。 2.命令排队:Redis服务器将收到的命令放入队列中,按照先进先出(FIFO)的原则等待执行。 3.命令

    2024年02月07日
    浏览(43)
  • 2023-06-07:Redis 持久化方式有哪些?以及有什么区别?

    2023-06-07:Redis 持久化方式有哪些?以及有什么区别? 答案2023-06-07: Redis提供了两种持久化机制:RDB和AOF。 RDB持久化是将Redis当前进程中的数据生成快照并保存到硬盘的过程。快照指的是Redis在某一时刻的内存状态的记录,类似于拍照一样把数据保存下来,因此也被称为Redi

    2024年02月08日
    浏览(54)
  • LoadRunner(一)(安装、简介、工作原理、测试流程、事务与集合点、思考时间)

    目录 性能测试  安装 LoadRunner简介 Load Generator: LoadRunner工作原理: LoadRounner 测试流程: 事务与集合点     事务的概述:         事务的作用:         使用事务的原因:     事务的添加:     设置事务             集合点的概述: controller组件中实操(可以处置、

    2024年02月03日
    浏览(59)
  • LoadRunner入门(一)(安装、简介、工作原理、测试流程、事务与集合点、思考时间)

      目录 性能测试  安装 LoadRunner简介 Load Generator: LoadRunner工作原理: LoadRounner 测试流程: 事务与集合点     事务的概述:         事务的作用:         使用事务的原因:     事务的添加:     设置事务             集合点的概述: controller组件中实操(可以处置

    2024年03月19日
    浏览(50)
  • 详解事务模式和Lua脚本,带你吃透Redis 事务

    摘要: Redis事务包含两种模式:事务模式和Lua脚本。 本文分享自华为云社区《一文讲透 Redis 事务》,作者: 勇哥java实战分享。 准确的讲,Redis事务包含两种模式: 事务模式和Lua脚本。 先说结论: Redis的事务模式具备如下特点: 保证隔离性; 无法保证持久性; 具备了一定

    2023年04月10日
    浏览(44)
  • 详解事务模式和 Lua 脚本,带你吃透 Redis 事务

    先说结论: Redis 的事务模式具备如下特点: 保证隔离性; 无法保证持久性; 具备了一定的原子性,但不支持回滚; 一致性的概念有分歧,假设在一致性的核心是约束的语意下,Redis 的事务可以保证一致性。 但 Lua 脚本更具备实用场景,它是另一种形式的事务,他具备一定

    2024年02月05日
    浏览(41)
  • 一文讲透 Redis 事务 (事务模式 VS Lua 脚本)

    准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本 。 先说结论: Redis 的事务模式具备如下特点: 保证隔离性; 无法保证持久性; 具备了一定的原子性,但不支持回滚; 一致性的概念有分歧,假设在一致性的核心是约束的语意下,Redis 的事务可以保证一致性。 但

    2023年04月08日
    浏览(42)
  • Redis入门 - 事务

    原文首更地址,阅读效果更佳! Redis入门 - 事务 | CoderMast编程桅杆 https://www.codermast.com/database/redis/redis-transaction.html Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证: 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行,事务中任意命

    2024年02月09日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包