Lua脚本和Redis-如何测试None值

发布于 2021-02-01 12:05:11

以下是我的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'
关注者
0
被浏览
319
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    如果在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}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看