У меня есть такой lua-скрипт, который выполняет команду hgetall на удаленном кластере Redis:
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 — уникальный идентификатор (первичный ключ) соотв. Сейчас эта функция возвращает пустой список.
Как передать переменную Java в приведенный выше сценарий lua с помощью io.lettuce.core? (Проблем с подключением нет, я могу использовать аналогичный запрос с жестко заданным значением key, и он работает)
@ m4gic, вы должны преобразовать свой комментарий в ответ, чтобы ОП мог его принять.




Вы можете найти пример в модульном тесте это. Кажется, вы должны называть это так:
list = syncCommands.evalsha(digest, MULTI, new String[0], key));
и вы должны ссылаться на аргумент как ARGV[1].
Для тех, кто читает, добавление возврата в конец скрипта lua, например return hgetallkeys(KEYS[1]), позволило мне передать переменную, как было предложено m4gic.
Вы можете найти пример в модульном тесте это. Кажется, вы должны называть это так: .evalsha(digest, MULTI, new String[0], key)); и вы должны ссылаться на аргумент как ARGV[1].