RedisClient для использования скрипта Lua с командой EVAL

я использую Некипелов / redisclient чтобы получить доступ к Redis, мне нужно получить несколько хеш-данных одним вызовом Redis, чтобы повысить производительность.

Более конкретно, я пытаюсь получить несколько хешей, как показано ниже:

redis-cli --ldb --eval /tmp/script.lua hash_key1 hash_key2

где script.lua:

local r = {}
for _, v in pairs(KEYS) do
r[#r+1] = redis.call('HGETALL', v)
end
return r

Но мне сложно выразить вышесказанное с помощью команды EVAL через некипелов / redisclient.

Я попробовал что-то ниже:

redisclient.command("EVAL", {"/tmp/script.lua", hash_key1, hash_key2}

но, очевидно, это неправильно.

4

Решение

Я нашел решение, и проблема появилась в том, как я создал команду EVAL в redisclient — я передавал скрипт Lua в виде файла:

const std::string script =
"local r = {} ""for _, v in pairs(KEYS) do ""r[#r+1] = redis.call('HGETALL', v) ""end ""return r ";

const unsigned int numKeys = 2;
const std::string key1 = "hash_key1";
const std::string key2 = "hash_key2";

result = redisclient.command("EVAL", {script, std::to_string(numKeys), key1, key2});
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]