【问题标题】:Redis script to return an averageRedis 脚本返回平均值
【发布时间】:2013-03-24 10:14:09
【问题描述】:

我正在 redis 中编写一个 LUA 脚本,以返回已存储的两个键(XXX_COUNT 和 XXX_TOTAL)的除法结果,如果任何键不存在,则返回 0。脚本代码如下:

    local count = redis.call("GET", KEYS[1]..'_COUNT')
    local total = redis.call("GET", KEYS[1]..'_TOTAL')
    if not count or not total then
        return 0
    else
        return tonumber(total)/tonumber(count)
    end

问题在于,当脚本返回“tonumber(total)/tonumber(count)”时,它的值始终为 0,已经检查了键并且它们具有非零值作为字符串存储在 redis 中。这个脚本有什么问题?

提前致谢!

【问题讨论】:

  • 使用print( total, count ) 并检查它显示的内容。

标签: lua redis


【解决方案1】:

我找到了解决方案,我需要在返回之前将结果转换为字符串:

    local count = redis.call("GET", KEYS[1]..'_COUNT')
    local total = redis.call("GET", KEYS[1]..'_TOTAL')
    if not count or not total then
        return 0
    else
        local avg = tonumber(total)/tonumber(count)
        return tostring(avg)
    end

希望它对某人有所帮助!

【讨论】:

    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 1970-01-01
    • 2022-12-17
    • 2016-02-20
    • 2017-08-10
    • 2018-09-08
    相关资源
    最近更新 更多