如何从java将变量传递给lua脚本? (io.lettuce.core)

Posted

技术标签:

【中文标题】如何从java将变量传递给lua脚本? (io.lettuce.core)【英文标题】:How to pass variable to lua script from java? ( io.lettuce.core ) 【发布时间】:2019-07-28 07:28:10 【问题描述】:

我有一个这样的 lua 脚本,它在远程 redis 集群上执行 hgetall 命令:

String shaFindAccount = syncCommands.scriptLoad("local hgetAllKeys = function(key) \n" +
                                                "local acc = redis.call('HGETALL', key)\n" +
                                                "return acc\n" +
                                                "end\n");

我想将一个变量传递给 hgetall 调用。这就是我调用上述脚本的 eval 语句的样子:

list = syncCommands.evalsha(shaFindAccount, ScriptOutputType.MULTI, key);

其中key 是 acc 的唯一标识符(主键)。现在这个函数返回一个空列表。

如何使用io.lettuce.core 将java 变量传递到上述lua 脚本中? (没有连接问题,我可以使用带有硬编码 key 值的类似查询,它可以工作)

【问题讨论】:

您可以在this 单元测试中找到一些示例。看来你应该这样称呼它: .evalsha(digest, MULTI, new String[0], key));并且您应该将参数称为 ARGV[1]。 @m4gic,您应该将您的评论转换为答案,以便 OP 可以接受它。 【参考方案1】:

您可以在this 单元测试中找到一些示例。看来你应该这样称呼它:

list = syncCommands.evalsha(digest, MULTI, new String[0], key));

您应该将参数称为 ARGV[1]。

【讨论】:

对于任何阅读的人,在 lua 脚本的末尾添加一个返回,例如 return hgetallkeys(KEYS[1]) 使我能够按照 m4gic 的建议传递变量

以上是关于如何从java将变量传递给lua脚本? (io.lettuce.core)的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个lua文件传递变量?

Pentaho 将变量从修改后的 java 脚本值传递到表输入

将变量传递给从命令行运行的 PHP 脚本

如何通过 nginx 将路径参数传递给 lua 代码?

如何在 Makefile 规则中将 env 变量传递给 shell 脚本

如何使用'for'循环将新变量传递给python脚本