如何将变量从 java 传递给 lua 脚本? ( io.lettuce.core )
How to pass variable to lua script from java? ( io.lettuce.core )
我有一个这样的 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的唯一标识(主键)。现在这个函数 returns 是一个空列表。
如何使用 io.lettuce.core
将 java 变量传递到上面的 lua 脚本中? (没有连接问题,我可以使用带有硬编码 key
值的类似查询并且有效)
您可以在 this 单元测试中找到一些示例。看来你应该这样称呼它:
list = syncCommands.evalsha(digest, MULTI, new String[0], key));
您应该将参数引用为 ARGV[1]。
我有一个这样的 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的唯一标识(主键)。现在这个函数 returns 是一个空列表。
如何使用 io.lettuce.core
将 java 变量传递到上面的 lua 脚本中? (没有连接问题,我可以使用带有硬编码 key
值的类似查询并且有效)
您可以在 this 单元测试中找到一些示例。看来你应该这样称呼它:
list = syncCommands.evalsha(digest, MULTI, new String[0], key));
您应该将参数引用为 ARGV[1]。