Lua绝对新手..刚开始1小时前:)。我想生成randomid并确保redis中不存在具有相同id的密钥。所以我在下面写了代码lua
local get_random_id
get_random_id = function(id)
local id_exists = redis.call("EXISTS", id)
if id_exists == 0 then
return id
end
local newid = randomstring(3)
get_random_id(newid)
end
local id = randomstring(3)
local existingid = "abc"
return get_event_id(existingid)
如果我传递了redis中不存在的密钥,它会返回一个新的随机密钥。但是如果redis中存在key,则返回nil。
更多信息:我监控redis并发现脚本生成随机字符串并检入redis但不知何故它返回nil
答案 0 :(得分:3)
您没有从递归调用中返回新的随机ID。
替换行:
get_random_id(newid)
使用:
return get_random_id(newid)
顺便说一下,你可以用以下方法替换你的函数定义:
local function get_random_id(id)
-- ... code ..
end
而不是
local get_random_id
get_random_id = function(id)
-- ... code ..
end