私のnode.jsプロジェクト用にいくつかのluaスクリプトを書いています。私のルアスクリプトの中には同じコードがあります。最初に説明しましょう。別のluaスクリプトからluaスクリプトをロード
私の最初のスクリプトは、指定されたキーのすべてのデータをredisから返します。
script1.lua
local data = {};
local keyslist = redis.call('keys', 'day:*');
local key, redisData;
for iCtr = 1, #keyslist do
key = string.gsub(keyslist[iCtr], 'day:','');
redisData = redis.call('hmget', keyslist[iCtr], 'users');
table.insert(data, {date=key, users=redisData[1]});
end
return cjson.encode(data);
私の2番目のスクリプトは、Redisのから同じキーからトップ2のレコードを返します。
local data = {};
local keyslist = redis.call('keys', 'day:*');
local key, redisData;
for iCtr = 1, #keyslist do
if iCtr < 3
key = string.gsub(keyslist[iCtr], 'day:','');
redisData = redis.call('hmget', keyslist[iCtr], 'users');
table.insert(data, {date=key, users=redisData[1]});
end
end
return cjson.encode(data);
script2.luaは今、次のように同じようscript2.luaからscript1.luaを呼び出したいです。
私は、コードの上にしようとしたscript2.lua(フォローなどのようにしたい)
local file = assert(loadfile("script1.lua"));
return file(2) -- return only top 2 records where needed.
-- some forLoop logic will be change as per about need.
が、それ以下のエラー
Script attempted to access unexisting global variable 'loadfile'
私の貧弱な説明のために申し訳ありませんて。
どのようにLuaのスクリプトを実行しているこのプロジェクトを試してみてください? – hjpotter92
@ hjpotter92 luaScriptManagerを使用しています luaScriptManager.loadFromDir(path + '/script2.lua'); –
Redisでは、(正式に)別のスクリプトからスクリプトを呼び出すことはできません。 –