Redis lua脚本无法正常工作

时间:2016-02-10 12:21:32

标签: lua redis

我创建了一个redis lua脚本来执行基于密钥数据类型的命令: -

local keyType = redis.call("TYPE", KEYS[1])
if (keyType == "string")
then
return redis.call("GET",KEYS[1])
else
return nil
end

每次执行时都返回null。可以帮助纠正脚本。

2 个答案:

答案 0 :(得分:4)

redis.call的响应返回为如下所示的表:{"ok": "string"}(如果类型是字符串)

因此,为了正确检查,您应该将代码更改为:

local keyType = redis.call("TYPE", KEYS[1]).ok

并且其余代码可以正常工作。

问题是:TYPE命令是返回“简单字符串”或“状态”redis回复的少数命令之一(请参阅redis protocol specs了解响应类型)。在redis lua文档中,它声明:

  

Redis状态回复 - > Lua表包含一个包含状态

的ok字段

这是发生在这里的事情。

答案 1 :(得分:0)

也可以使用[1]。localkeyType = redis.call(“ TYPE”,KEYS [1])返回keyType [1]