是否可以在redis中调用其他lua脚本中定义的lua函数?

是否可以在redis中调用其他lua脚本中定义的lua函数?,第1张

是否可以在redis中调用其他lua脚本中定义的lua函数

重要声明: 请参阅下面的Josiah答案。我的回答原来是 错误的, 或者至少是 不完整的
。当然,这让我感到非常高兴,这使Redis更加灵活。

我的答案不正确/不完整:

我很确定这是不可能的。不允许使用全局变量(请阅读docs),Redis
Lua引擎将脚本本身获取本地范围和临时范围。

如果Lua函数执行任何写 *** 作,则会在幕后自动设置“正在写”标志。这将开始交易。如果您级联Lua调用,则Redis中的簿记将变得非常麻烦,尤其是当级联在Redis从站上执行时。这就是为什么公司

eval
evalSHA
有意不提供为有效的Redis调用一个Lua脚本中。调用您正在尝试执行的已“加载”的Lua函数也是如此。如果从服务器在第一个脚本的加载和第二个脚本的执行之间重启,将会发生什么?

我们为克服此限制所做的工作:

不使用

eval
,仅使用
script LOAD
evalSHA
。将SHA1存储在Redis哈希集中。

我们在版本控制系统中将其自动化,因此已提交的Lua脚本会自动使用逻辑名自动获取哈希存储在Redis主数据库中的SHA1校验和。客户端不能使用eval(在从属服务器上;我们在配置中禁用了eval
+ LOAD)。但是客户可以要求SHA1进行下一步。几乎我们所有的Lua函数都为下一次调用返回SHA1。

希望这会有所帮助,TW



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4901113.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存