4

下面是我的lua脚本:

     local ckid = redis.pcall('get',KEYS[1])
     local meta = redis.call('hgetall', ckid)
     return {ckid, meta}

如果第一次调用没有退出密钥,我不想执行第二次调用。

所以...我不知道 None 的返回值是什么。在 python 中,返回值为 None。

if ckid ~= '???????' then 
    local meta = redis.call('hgetall', ckid)
else
     local meta = 'empty'
retrun {ckid, meta}

那么......我该怎么做是lua?

     local ckid = redis.pcall('get',KEYS[1])
     if ckid ~= nil then
         local meta = redis.call('hgetall', ckid)
     else
         local meta = 'none'
         local ckid = 'none'
     end

     return {ckid, meta}

使用零时..

ResponseError: ERR Error running script (call to f_1400713412b0063a26eb0dc063f53a4e3be26380): user_script:12: Script attempted to access unexisting global variable 'meta'
4

2 回答 2

11

如果你在 if 语句中定义了一个局部变量,它只存在于 if 语句中。查看手册中的局部变量范围。

尝试

 local ckid = redis.pcall('get',KEYS[1])
 local meta
 if ckid ~= nil then
     meta = redis.call('hgetall', ckid)
 else
     meta = 'none'
     ckid = 'none'
 end

 return {ckid, meta}
于 2012-11-03T07:30:00.880 回答
0

nil 这是手册中提到的第一件事。

于 2012-11-03T06:37:05.627 回答