【问题标题】:use associate array total value count Lua使用关联数组总值计数 Lua
【发布时间】:2019-08-22 07:00:25
【问题描述】:

我想统计每个redis key的数据类型,我写了如下代码,但是运行报错,如何解决?

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】:

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

    问题一)

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

    可能的问题 b)

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

    【讨论】:

    • 我发现为什么 val 是 null ,val 是一个表,真正的值是 val.ok = hash or set 或者其他数据类型,
    • @user1208081,所以你会想要:data[val] = (data[val] or 0) + 1
    猜你喜欢
    • 2020-12-11
    • 2016-03-06
    • 2013-02-05
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 2019-05-03
    • 1970-01-01
    • 2013-02-04
    相关资源
    最近更新 更多