1

对 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 中,它返回我为零。

更多信息:我监控 redis 并发现脚本正在生成随机字符串并签入 redis 但不知何故它返回 nil

4

1 回答 1

4

您不会从递归调用中返回新的随机 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
于 2013-09-11T04:55:24.473 回答