使用关联数组总值计数Lua

问题描述 投票:0回答:1

我想计算每个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'执行算术运算(零值)

redis lua
1个回答
1
投票

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

问题a)

detail.valdetail["val"]的语法糖。因此,如果你期望val是一个字符串,那么将它用作表键的正确方法是detail[val]

可能的问题b)

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

© www.soinside.com 2019 - 2024. All rights reserved.