I need to use Redis HMGET
from a Lua script and extract specific values in following code.
But redis.call('HMGET', table_key, hkey1, hkey2, ...)
return a flat array of {hkey1, val1, hkey2, val2, ...}
To extract values by key I wrote:
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
Of course, as usage grow, multiple calls to this function presented major performance drop.
What is an efficient way to read values from the flat array returned by HMGET
?
Or otherwise, to convert the returned value into a proper key-value table?