栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

是否可以在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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369526.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号