Redis如何使EVAL脚本表现得像MULTI / EXEC?

问题描述 投票:0回答:1

我在使用Lua脚本时注意到的一件事是,在包含多个操作的脚本中,如果在脚本执行过程中抛出错误,则在错误之前完成的操作实际上会反映在数据库中。这与MULTI / EXEC相反,后者所有操作都成功或失败。

例如,如果我有如下脚本:

redis.call("hset", "mykey", "myfield", "val")
local expiry = someFunctionThatMightThrow()
redis.call("expire", "mykey", expiry)

我对此进行了测试,并且第一个hset调用的结果反映在redis中。是否有任何方法可以使lua脚本起作用,以便在脚本执行过程中引发任何错误,然后还原该脚本执行过程中执行的所有操作?

redis lua
1个回答
0
投票
上面我的评论的示例脚本,关于错误手动回滚。注意:语法未经验证。
© www.soinside.com 2019 - 2024. All rights reserved.