1

lua はまったく初めてです.. ちょうど 1 時間前に開始しました :) . randomid を生成し、同じ ID を持つキーが redis に存在しないことを確認します。だから私は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 に存在する場合、nil が返されます。

詳細情報: 私は 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 に答える