从另一个lua脚本加载lua脚本

我为我的node.js项目写了一些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); 

我的第二个脚本返回来自redis的相同密钥的前2个logging。

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); 

现在想从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' 

对不起,我可怜的解释。

这是一个redis问题

看看: https : //redislabs.com/ebook/redis-in-action/part-3-next-steps-3/chapter-11-scripting-redis-with-lua/11-1-adding-functionality-without -写入-C / 11-1-1-装载-LUA的脚本-进入- redis的

和这里

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

ret_1 = script_load(“return 1”)

ret_1(康涅狄格州)

1L

在你的情况下,脚本不明白'loadfile'是什么意思。

或者尝试这个项目https://github.com/anvaka/redis-load-scripts