5

我正在 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 中。这个脚本有什么问题?

提前致谢!

4

1 回答 1

5

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

    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

希望它可以帮助某人!

于 2013-04-03T17:25:53.563 回答