No Redis, eu executo um script Lua por meio da CLI como este: -
$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
Portanto, meu script Lua aceita 4 chaves e 2 argumentos.
Agora quero executar o mesmo script em Node.js.
Estou usando esta biblioteca para importar Redis em meu aplicativo.
Não encontrei nenhum exemplo que fale sobre os argumentos da função redisClient.eval (...) para a execução do script Lua.
Portanto, estou apenas acertando em algo aleatório que pode funcionar. Mas nada parece funcionar.
Minha pergunta: Como executar o comando abaixo usando node.js, para que ele retorne a mesma coisa que ele faz quando executado através de CLI (interface de linha de comando).
$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
--eval
não é um comando 'real' do redis, mas apenas uma opção extra do redis-cli. No entanto, ainda é possível fazer o que quiser:
'use strict'
const redis = require('redis')
const client = redis.createClient()
const fs = require('fs')
client.eval(fs.readFileSync('./test.lua'), 2, 'key1', 'key2', 'first', 'second', function(err, res) {
console.log(arguments);
});
Lembre-se de que você pode querer fazer algumas verificações de segurança e que EVAL
requer mais opções do que --eval
. Leia mais sobre a diferença entre --eval
e EVAL
aqui: https://redis.io/topics/rediscli#running -lua-scripts
Comentários muito úteis
--eval
não é um comando 'real' do redis, mas apenas uma opção extra do redis-cli. No entanto, ainda é possível fazer o que quiser:Lembre-se de que você pode querer fazer algumas verificações de segurança e que
EVAL
requer mais opções do que--eval
. Leia mais sobre a diferença entre--eval
eEVAL
aqui: https://redis.io/topics/rediscli#running -lua-scripts