当前位置: 首页 > 面试题库 >

执行redis eval命令以在nodeJS中运行Lua脚本

顾喜
2023-03-14
问题内容

在Redis中,我通过CLI运行Lua脚本,如下所示:-

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

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

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

我正在使用此库在我的应用程序中导入Redis。

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

因此,我只是碰到一些可能起作用的东西。但是似乎没有任何作用。

我的app.js像这样:

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

// my hit and trial guess
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执行以下命令,以便它返回与通过CLI(命令行界面)执行时相同的内容。

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

问题答案:

找到了一些解决方案:

解决方案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);
});

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

解决方案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);
    });


 类似资料:
  • 问题内容: 我正在尝试在python脚本中执行curl命令。 如果我在终端中执行此操作,则如下所示: 我看到了使用建议,但是我不知道如何将其应用于我的。 我尝试使用: 可以,但是还有更好的方法吗? 问题答案: 您可以像@roippi一样使用urllib:

  • 问题内容: 我有一个文件,其中我必须替换所有单词,如$ xyz,对于它们,我必须替换为以下内容: 这个文件也有一些像$ {abcd}这样的词,我不必更改。我正在使用此命令 sed -i’s?\ $([A-Z _] +)?\ $ {\ 1}?g’文件 它可以在命令行上正常工作,但不能在perl脚本中作为 ; 我想念什么?我认为添加一些反斜杠会有所帮助。我尝试添加一些但没有成功。 谢谢 问题答案: 在

  • 问题内容: 当我尝试从PyCharm IDE运行程序时,一切正常,但是如果我输入Fedora: 在shell提示中,我从1个模块收到导入错误。 当从IDE启动时,PyCharm可以执行哪些操作以使解释器找到我的依赖项?如何获得脚本以找到其依赖项,以便可以使用singe命令启动它? 问题答案: 有一些可能的原因可能导致这种情况: 相同的python解释器?检查与 它是同一工作目录吗?检查与 中的差异

  • 我正试图用脚本方法安装一个模块,但我不知道如何用节点脚本语言安装,或者如果你有任何想法请与我分享。

  • 我如何通过命令行运行它?

  • 问题内容: 我有一个具有某些功能的脚本。 我可以直接从命令行运行功能之一吗? 像这样吗 问题答案: 如果脚本仅定义函数,而不执行其他任何操作,则可以先使用or 命令在当前shell的上下文中执行脚本,然后简单地调用函数。请参阅以获取更多信息。