In Redis führe ich ein Lua-Skript über die CLI wie folgt aus : -
$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
Mein Lua-Skript akzeptiert also 4 Schlüssel und 2 Argumente.
Jetzt möchte ich das gleiche Skript in Node.js ausführen.
Ich verwende diese Bibliothek zum Importieren von Redis in meine App.
Ich habe kein Beispiel gefunden, das über die Argumente der Funktion redisClient.eval (...) für die Ausführung des Lua-Skripts informiert.
Also treffe ich nur etwas Zufälliges, das funktionieren könnte. Aber nichts scheint zu funktionieren.
Meine Frage: Wie man den folgenden Befehl mit node.js ausführt, damit er dasselbe zurückgibt wie bei der Ausführung über die CLI (Befehlszeilenschnittstelle).
$ redis-cli --eval debug_script.lua key1 key2 key3 key4 , arg1 arg2
--eval
ist kein 'echter' Redis-Befehl, sondern nur eine zusätzliche Option von Redis-Cli. Es ist jedoch weiterhin möglich, das zu tun, was Sie möchten:
'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);
});
Denken Sie daran, dass Sie möglicherweise einige Sicherheitsüberprüfungen durchführen möchten und dass EVAL
mehr Optionen erfordert als --eval
. Lesen Sie hier mehr über den Unterschied zwischen --eval
und EVAL
: https://redis.io/topics/rediscli#running -lua-scripts
Hilfreichster Kommentar
--eval
ist kein 'echter' Redis-Befehl, sondern nur eine zusätzliche Option von Redis-Cli. Es ist jedoch weiterhin möglich, das zu tun, was Sie möchten:Denken Sie daran, dass Sie möglicherweise einige Sicherheitsüberprüfungen durchführen möchten und dass
EVAL
mehr Optionen erfordert als--eval
. Lesen Sie hier mehr über den Unterschied zwischen--eval
undEVAL
: https://redis.io/topics/rediscli#running -lua-scripts