用于扫描的Lua脚本具有“匹配”和“计数”约束

时间:2015-08-18 06:05:18

标签: lua redis parameter-passing jedis

我正在使用 Jedis 。我需要 Lua 脚本来扫描具有指定限制的模式。我不知道如何在Lua脚本中传递参数。 示例代码:

String script="return     {redis.call('SCAN',KEYS[1],'COUNT',KEYS[2],'MATCH',KEYS[3]}";
List<String> response = (List<String>)jedis.eval(script,cursor,COUNT,pattern);

如何将这些参数传递给脚本?

1 个答案:

答案 0 :(得分:0)

您的代码有几点需要解决。

  • 在扫描命令中,'match'参数应放在'count'之前。
  • 只有当它是Redis密钥的地方时才应该使用KEYS。其他事情应该代表ARGV。
  • 您在调用Jedis.eval()时忘记指定密钥计数。

因此,您的代码的修复版本是

String script="return {redis.call('SCAN',ARGV[1],'MATCH',ARGV[2],'COUNT',ARGV[3])}"; List<String> response = (List<String>)jedis.eval(script, 0, cursor, pattern, COUNT);

但我同意Itamar使用Jedis.scan()代替。

希望这有帮助。