Node-redis: executando o comando redis eval para executar o script Lua em nodeJS

Criado em 22 jun. 2017  ·  1Comentário  ·  Fonte: NodeRedis/node-redis

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
question

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:

'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

>Todos os comentários

--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

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

twappworld picture twappworld  ·  7Comentários

Mickael-van-der-Beek picture Mickael-van-der-Beek  ·  6Comentários

ghost picture ghost  ·  3Comentários

aletorrado picture aletorrado  ·  6Comentários

jackycchen picture jackycchen  ·  4Comentários