当前位置:  开发笔记 > 编程语言 > 正文

Lua脚本从Redis HGETALL调用返回高效字典

如何解决《Lua脚本从RedisHGETALL调用返回高效字典》经验,为你挑选了1个好方法。

我需要HMGET从Lua脚本中使用Redis 并在以下代码中提取特定值.但是redis.call('HMGET', table_key, hkey1, hkey2, ...)返回一个扁平的阵列{hkey1, val1, hkey2, val2, ...}

要按键提取值,我写道:

local function flat_map_get(flat_map, hash_key)
    local i = 1
    while flat_map[i] do
        if flat_map[i] == hash_key then
            return flat_map[i+1]
        end
        i = i+2
    end
end

当然,随着使用量的增加,对此功能的多次调用显示出主要的性能下降.

什么是从返回的平面数组中读取值的有效方法HMGET?或者,将返回的值转换为正确的键值表?



1> amotzg..:

经过一些分析和测试,我们发现以下函数具有良好的性能并使用它来获得正确的表.

这节省了为每个散列键检索调用getter函数的需要.

local function hgetall(hash_key)
    local flat_map = redis.call('HGETALL', hash_key)
    local result = {}
    for i = 1, #flat_map, 2 do
        result[flat_map[i]] = flat_map[i + 1]
    end
    return result
end

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有