В Redis я запускаю сценарий Lua через CLI следующим образом: -
$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
Итак, мой сценарий Lua принимает 4 ключа и 2 аргумента.
Теперь я хочу запустить тот же сценарий в Node.js.
Я использую эту библиотеку для импорта Redis в свое приложение.
Я не нашел ни одного примера, рассказывающего об аргументах функции redisClient.eval (...) для выполнения скрипта Lua.
Таким образом, я просто нажимаю что-то случайное, что может сработать. Но вроде ничего не работает.
Мой вопрос: как выполнить команду ниже с помощью node.js, чтобы она возвращала то же самое, что и при выполнении через CLI (интерфейс командной строки).
$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
--eval
- это не «настоящая» команда redis, а просто дополнительная опция redis-cli. Однако все еще можно делать то, что вы хотите:
'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);
});
Имейте в виду, что вы можете захотеть выполнить некоторые проверки безопасности и что EVAL
требует больше параметров, чем --eval
. Узнайте больше о разнице между --eval
и EVAL
здесь: https://redis.io/topics/rediscli#running -lua-scripts
Самый полезный комментарий
--eval
- это не «настоящая» команда redis, а просто дополнительная опция redis-cli. Однако все еще можно делать то, что вы хотите:Имейте в виду, что вы можете захотеть выполнить некоторые проверки безопасности и что
EVAL
требует больше параметров, чем--eval
. Узнайте больше о разнице между--eval
иEVAL
здесь: https://redis.io/topics/rediscli#running -lua-scripts