1
我为我的移动应用程序api实现的一个模块是从提交用户名获取所有未完成的通知。如何在redis中使用lua将可用结果返回给nodejs
我使用了一个名为username:notifications的列表来存储所有未完成的通知ID。 例如,在我的测试案例中,[“9”,“10”,11' ]是呼吁
lrange username:notifications 0 -1
所以我写了一个Lua脚本来获得lrange后为每个结果的结果,
hgetall notification:id
由于某些原因,lua无法发送表,导致nodejs处于可用状态。想知道是否有人 有多个hgetall要求的解决方案,并将其送回给
的NodeJS这里去的其余代码: - @KEYS:“用户名” - @ARGV:用户名
-- gets all fields from a hash as a dictionary
local hgetall = function (key)
local bulk = redis.call('HGETALL', key)
local result = {}
local nextkey
for i, v in ipairs(bulk) do
if i % 2 == 1 then
nextkey = v
else
result[nextkey] = v
end
end
end
local result = {}
local fields = redis.call('LRANGE' , ARGV[1], 0,-1)
for i, field in ipairs(fields) do
result[field] = hgetall('notification:'..field)
end
return result
这个答案在10月3日被接受,然后未被接受的是星期三。它不适合你吗? – catwell 2014-10-14 11:13:28