gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:59:11 62 4
gpt4 key购买 nike

我需要从 Lua 脚本中使用 Redis HMGET 并在以下代码中提取特定值。但是 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 返回的平面数组中读取值的有效方法是什么?或者,将返回值转换为适当的键值表?

最佳答案

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

这样就无需为每个哈希键检索调用 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

关于从 Redis HGETALL 调用返回高效字典的 Lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34313598/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com