redis事务对比Lua脚本区别是什么

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

redis官方对于lua脚本的解释:Redis使用同一个Lua解释器来执行所有命令,同时,Redis保证以一种原子性的方式来执行脚本:当lua脚本在执行的时候,不会有其他脚本和命令同时执行,这种语义类似于 MULTI/EXEC。从别的客户端的视角来看,一个lua脚本要么不可见,要么已经执行完。

然而这也意味着,执行一个较慢的lua脚本是不建议的,由于脚本的开销非常低,构造一个快速执行的脚本并非难事。但是你要注意到,当你正在执行一个比较慢的脚本时,所以其他的客户端都无法执行命令。

所以我们总结一下: Lua脚本可以保证原子性,因为Redis会将Lua脚本封装成一个单独的事务,而这个单独的事务会在Redis客户端运行时,由Redis服务器自行处理并完成整个事务,如果在这个进程中有其他客户端请求的时候。Redis将会把它暂存起来,等到 Lua 脚本处理完毕后,才会再把被暂存的请求恢复。
这样就可以保证整个脚本是作为一个整体执行的,中间不会被其他命令插入。但是,如果命令执行过程中命令产生错误,事务是不会回滚的,将会影响后续命令的执行.
也就是说,Redis保证以原子方式执行Lua脚本,但是不保证脚本中所有操作要么都执行或者都回滚。

而Redis是支持事务的,而Redis事务主要目的是保证多个命令执行的原子性,即要在一个原子操作中执行,不会被打断
需要注意的是,Redis的事务是不支持回滚的,如果事务执行过程中发生错误,Redis会继续执行剩余的命令而不是回滚整个事务。

那么为什么Redis不支持事务回滚呢?
redis事务对比Lua脚本区别是什么,# 分布式缓存,redis,lua,数据库
按照redis官方解释是说:

  1. Redis 事务的执行时,错误通常都是编程错误造成的,这种错误通常只会出现在开发环境中,而很少会在实际的生产环境中出现,所以他认为没有必要为 Redis 开发事务回滚功能;
  2. 不支持事务回滚是因为这种复杂的功能和 Redis 追求的简单高效的设计主旨不符合

参考链接:https://redis.io/commands/eval/文章来源地址https://www.toymoban.com/news/detail-651299.html

到了这里,关于redis事务对比Lua脚本区别是什么的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 一文讲透 Redis 事务 (事务模式 VS Lua 脚本)

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

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

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

    2024年02月05日
    浏览(41)
  • 基于秒杀-----分布式锁----lua脚本

    基于商品显示秒杀-一人一单业务_xzm_的博客-CSDN博客改进 分布式锁 :满足分布式系统或集群模式下 多进程可见 并且 互斥 的锁  分布式锁的五个基本要求 :多进程可见,互斥,高可用,高性能,安全性 三种实现方式  redis  1.创建获取锁删除锁的工具类 2.修改代码 测试结果

    2024年02月06日
    浏览(46)
  • 在 Redis 中使用 Lua 脚本执行复杂操作和事务

    在 Redis 中使用 Lua 脚本执行复杂操作和事务 Redis 作为一个高性能的键值存储数据库,它的强大功能远不止于简单的数据存储和检索。Redis 自 2.6 版本起引入了对 Lua 脚本的支持,这意味着你可以在 Redis 服务器上直接运行 Lua 脚本。这一功能为执行复杂的操作和事务提供了强大

    2024年01月25日
    浏览(51)
  • 利用Java代码调用Lua脚本改造分布式锁

    4.8 利用Java代码调用Lua脚本改造分布式锁 lua脚本本身并不需要大家花费太多时间去研究,只需要知道如何调用,大致是什么意思即可,所以在笔记中并不会详细的去解释这些lua表达式的含义。 我们的RedisTemplate中,可以利用execute方法去执行lua脚本,参数对应关系就如下图股

    2024年04月10日
    浏览(55)
  • 【面试 分布式锁详细解析】续命 自旋锁 看门狗 重入锁,加锁 续命 解锁 核心源码,lua脚本解析,具体代码和lua脚本如何实现

    自己实现锁续命 在 controller 里开一个 线程 (可以为 守护线程) 每10秒,判断一个 这个 UUID是否存在,如果 存在,重置为 30秒。 如果不存在,守护线程 也结束。 基本的key value 基本的使用 setIfAbsent存在不设置 16384 Redis 集群没有使用一致性hash, 而是引入了哈希槽的概念。 R

    2023年04月09日
    浏览(41)
  • Redis分布式锁和分布式事务

    Redis分布式锁和分布式事务 一、Redis分布式锁 1.1 watch和事务实现分布式锁 原理是通过watch来观察一个变量,一个线程在操作的时候,其他线程会操作失败,相当于乐观锁。 1.2 setnx实现分布式锁 原理是通过setnx设置一个变量,设置成功的线程抢到锁,执行相关的业务,执行完毕

    2024年02月09日
    浏览(45)
  • 华为云云耀云服务器L实例评测|使用redis事务和lua脚本

    云服务器类型分为三种:公有云服务器,私有云服务器,专用云服务器 公有云服务器:公有云服务器具有成本效益、弹性扩展、可靠性、高可用性、管理简便、安全性、全球化服务和技术支持等优势,适用于各种规模和类型的企业和个人需求。 私有云服务器:私有云服务器

    2024年02月07日
    浏览(49)
  • redis的分布式事务-redisson

    Redisson分布式锁是一种基于redis实现的分布式锁,它利用redis的setnx命令实现分布式锁的互斥访问。同时还支持锁的自动续期功能,可以避免因为某个进程崩溃或者网络故障导致锁无法释放的情况。 只要线程一加锁成功,就会启动一个watch dog看门狗,它是一个后台线程,会每隔

    2024年02月13日
    浏览(48)
  • 聊聊什么是分布式事务

    分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上,以上是百度百科的解释。 简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务

    2024年02月08日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包