Lua脚本用于使用“匹配”和“数量”约束进行扫描。

我正在使用 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);

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

点赞
用户3480122
用户3480122

您的代码有几个需要修复的地方。

  • 在扫描命令中,'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()来代替。

希望这能帮助您。

2015-08-19 03:57:56