Lw中 2021-09-28 17:49 采纳率: 33.3%
浏览 237

Redis的Lua脚本报错,不可与空值作比较


static String secKillScript ="local userid=KEYS[1];\r\n" + 
            "local prodid=KEYS[2];\r\n" + 
            "local qtkey='sk:'..prodid..\":qt\";\r\n" + 
            "local usersKey='sk:'..prodid..\":usr\";\r\n" + 
            "local userExists=redis.call(\"sismember\",usersKey,userid);\r\n" + 
            "if tonumber(userExists)==1 then \r\n" + 
            "   return 2;\r\n" + 
            "end\r\n" + 
            "local num= redis.call(\"get\" ,qtkey);\r\n" + 
            "if tonumber(num)<=0 then \r\n" + 
            "   return 0;\r\n" + 
            "else \r\n" + 
            "   redis.call(\"decr\",qtkey);\r\n" + 
            "   redis.call(\"sadd\",usersKey,userid);\r\n" + 
            "end\r\n" + 
            "return 1" ;

 ERR Error running script (call to f_f9afe425ba65e09ade381eeff39bf46593238b8e): @user_script:6: user_script:6: attempt to compare nil with number

Lua脚本报错,不可与空值作比较

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-09-28 17:56
    关注
    tonumber(userExists)
    

    当userExists为null时,转换是会报错的。对userExists先判断是否为空。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月28日