Я написал несколько сценариев lua для моего проекта node.js. но некоторые из моих сценариев lua имеют в нем один и тот же код. позвольте мне объяснить сначала.загрузить lua script из другого сценария 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.
script2.lua
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);
Теперь хотите позвонить script1.lua из script2.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 (путь + '/script2.lua'); –
Вы не можете (официально) вызывать скрипт из другого скрипта в Redis. –