我希望一个接一个地运行许多Lua脚本,而不允许任何命令在其间运行。我还需要将第一个脚本的结果传递给第二个脚本,等等。
我已将所有脚本放在一个文件中,暂时解决了问题。但是,第二个脚本会修改第一个脚本返回的键。因此,将所有内容放在一个文件中会违反EVAL命令语义,因为第二个脚本使用的所有键都应该使用KEYS数组传递。
答案 0 :(得分:9)
实际上,这是可能的。 Redis有一个无证的功能,可以做到这一点。基本前提是,一旦您EVAL或SCRIPT LOAD脚本,您可以通过调用函数f_<sha1 hash>
(其中sha1 hash
是第一个脚本的SHA1哈希)来调用另一个脚本。
归功于Josiah Carlson(他反过来称赞Nathan Fritz)。 Josiah博士非常友好地提供here中的所有细节(该文件是Python包的一部分,有助于管理调用其他脚本的Lua脚本)。
答案 1 :(得分:-1)
你做不到。但是,只要不使用Redis群集,违反EVAL语义就不应该成为问题。