【发布时间】: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 可以接受它。
标签: java redis lua parameter-passing lettuce