我想计算每个redis密钥的数据类型,我编写以下代码,但是运行错误,如何解决?
local detail = {}
detail.hash = 0
detail.set = 0
detail.string = 0
local match = redis.call('KEYS','*')
for i,v in ipairs(match) do
local val = redis.call('TYPE',v)
detail.val = detail.val + 1
end
return detail
(错误)ERR错误运行脚本(调用f_29ae9e57b4b82e2ae1d5020e418f04fcc98ebef4):@user_script:10:user_script:10:尝试对字段'val'(nil值)进行算术
答案 0 :(得分:1)
该错误告诉您detail.val为零。这意味着键“ val”没有表值。因此,不允许您对其进行任何算术运算。
问题a)
detail.val
是detail["val"]
的语法糖。因此,如果您希望val
是一个字符串,则将其用作表键的正确方法是detail[val]
。
可能的问题b)
进行快速研究后,我发现此redis调用可能返回一个表,而不是字符串。因此,如果detail[val]
不起作用,请检查val
的类型。