在 Node.js 中执行 Redis eval 命令运行 Lua 脚本

在 Redis 中,我通过命令行界面执行 Lua 脚本,就像这样:-

$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2

所以,我的 Lua 脚本接受 4 个键和 2 个参数。

现在,我想在 Node.js 中运行相同的脚本。

我正在使用这个库 this 将 Redis 导入我的应用程序中。

我没有找到任何关于 redisClient.eval() 函数执行 Lua 脚本参数的示例。

因此,我只是随便猜测可能有效的东西。但是似乎什么也不起作用。

我的 app.js 如下所示:

var redis = require("redis")
var client = redis.createClient();

//我的猜测
client.eval(["script_file.lua", 1 "score" 0 10 , "meeting_type:email" meeting_status:close], function(err, res){
    console.log("something happened\n");
});

我的问题:如何使用 Node.js 执行下面的命令,以便在通过命令行界面执行时返回相同的内容。

$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
点赞
用户5411888
用户5411888

发现一些解决方案:

解决方案 1)

var redis = require('redis')
var client = redis.createClient()
var fs = require('fs')

client.eval(fs.readFileSync('./debug_script.lua'), 4, key1, key2, key3, key4, arg1, arg2, function(err, res) {
  console.log(res);
});

注意4(eval 的第二个参数)表示要在脚本中传递的键数。

解决方案 2) 创建一个子进程并运行 CLI 命令。

var redis = require("redis");
var client = redis.createClient();

var exec = require('child_process').exec;

var cmd = 'redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2';

exec(cmd, function(error, stdout, stderr) {
    // command output is in stdout
        console.log("something happened \n");
        console.log(stdout);
    });
2017-06-22 10:35:46