使用关联数组总值计数Lua

时间:2019-04-01 07:00:04

标签: redis lua

我想计算每个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值)进行算术

1 个答案:

答案 0 :(得分:1)

该错误告诉您detail.val为零。这意味着键“ val”没有表值。因此,不允许您对其进行任何算术运算。

问题a)

detail.valdetail["val"]的语法糖。因此,如果您希望val是一个字符串,则将其用作表键的正确方法是detail[val]

可能的问题b)

进行快速研究后,我发现此redis调用可能返回一个表,而不是字符串。因此,如果detail[val]不起作用,请检查val的类型。