当前位置: 首页 > 知识库问答 >
问题:

有什么理由在Redis中使用multi/watch/exec而不是Lua脚本(eval)?

莫河
2023-03-14

我理解Lua脚本与watch/multi/exec相比相对较新。那么现在有没有理由使用watch/multi/exec呢?

共有1个答案

孙才捷
2023-03-14

任何事情都有正反两面。

为什么使用multi/exec(主要原因):

  • 简单动词(如果您已经对Redis感兴趣),不需要“学习”Lua(尽管这样做只需要15分钟)
  • 在服务器处理中,不需要启动Lua上下文(尽管这样做的代价很小)
  • 确保块原子性
 类似资料:
  • 问题内容: 我在RedisOnGo + node_redis上使用NodeJS + Express + Redis作为客户端。我期望很多并发,因此尝试测试WATCH。此示例将不包含Express,仅包含必要的内容。 预期的结果 :在exec回调中得到N个错误,最后得到“ inc”变量= 10-N。 意外的结果 :exec回调中出现0个错误,但最终得到“ inc”变量= 1。 观看不适用于我的代码。

  • 问题内容: 在使用Lua脚本时,我注意到的一件事是,在包含多个操作的脚本中,如果在脚本执行过程中抛出错误,则在错误之前完成的操作实际上会反映在数据库中。这与MULTI / EXEC相反,后者所有操作都成功或失败。 例如,如果我有如下脚本: 我对此进行了测试,并且第一次调用的结果反映在redis中。是否有任何方法可以使lua脚本起作用,以便在脚本执行过程中引发任何错误,然后恢复该脚本执行过程中执行的

  • 版本: 返回一个,其ID为“z”,偏移量为0,默认区域规则。 返回一个,包含ID“utc”和。 例如,在处理时。在这里,我能发现的唯一区别是它的打印方式不同。 我们正在来回地进行代码审查讨论,所以我想这种冲突并不罕见。 它是一个常量(此外,它的偏移量值(0)甚至被缓存)。 由于缺少区域信息,它的开销少了一点。 在UTC时,不需要考虑夏时制时间或历史变化,就像在任何其他时区一样。 因此,对于我迄今为

  • 我主要担心的是,由于使用乐观锁定,当我将有多个进程(比键数多得多,键数只有4个)试图更新值时,事务失败率将非常高。 这是正确的吗?有没有办法防止这种情况发生?

  • 主要内容:第一个Lua脚本命令,为什么使用Lua脚本,常用脚本命令,基本命令应用从 Redis 2.6 版本开始,Redis 使用内置的 Lua 解释器执行脚本,这意味着我们可以直接在 Redis 客户端执行Lua 脚本 ,于此同时 Redis 还非常贴心地提供了用于编写 Lua 脚本的 命令。 第一个Lua脚本命令 Lua 是一种轻量小巧、开源的脚本语言,用标准 C语言编写。其设计目的就是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。它被广泛的应用于:游戏开发

  • 问题内容: 我创建了一个redis lua脚本来执行基于关键数据类型的命令: 每次执行时,它都会返回null。请帮助纠正脚本。 问题答案: 对响应的返回形式如下表:(如果类型为字符串,则返回) 因此,为了正确检查,您应该将代码更改为: 其余代码将正常运行。 问题是这样的:TYPE命令是少数几个返回“简单字符串”或“状态” redis答复的命令之一(有关响应类型,请参见redis协议规范)。在red