从另一个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'是什么意思。