独特的随机密钥redis lua脚本

时间:2013-09-11 02:55:20

标签: lua redis

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

1 个答案:

答案 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