2016-09-13 6 views
1

Я написал несколько сценариев 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' 

Извини за мое плохое объяснение.

+0

Как вы выполнение сценария Lua? – hjpotter92

+0

@ hjpotter92 с помощью luaScriptManager luaScriptManager.loadFromDir (путь + '/script2.lua'); –

+0

Вы не можете (официально) вызывать скрипт из другого скрипта в Redis. –

ответ

2

Это вопрос Redis

Посмотрите: https://redislabs.com/ebook/redis-in-action/part-3-next-steps-3/chapter-11-scripting-redis-with-lua/11-1-adding-functionality-without-writing-c/11-1-1-loading-lua-scripts-into-redis

и здесь

http://redis.io/commands/script-load

ret_1 = script_load ("возвращает 1")

ret_1 (conn)

1L

В вашем случае сценарий не понимает, что делает 'LoadFile' означает.

или попробовать этот проект https://github.com/anvaka/redis-load-scripts

+0

все еще у меня ошибка: скрипт попытался получить доступ к неизученной глобальной переменной 'script_load' –

+0

https://github.com/anvaka/redis-load-scripts попробуйте этот проект – Vyacheslav

 Смежные вопросы

  • Нет связанных вопросов^_^