如何在 redis 中从多个哈希表中 HGET

需要在 redis 中获取多个键中相同字段的值。

127.0.0.1:6379> HGET Object:100:RATE:9008 properties.status
"OK"
127.0.0.1:6379> HGET Object:100:RATE:9000 properties.status
"NOT OK"
// 计划像下面这样实现
HGETMULTIPLE  Object:100:RATE:9000 properties.status Object:100:RATE:9008 properties.status
 "OK" "NOT OK"

需要使用 lua 完成,所以 lua 解决方案也可以。但我知道在 lua 中没有这样的管道处理。

点赞
用户5384363
用户5384363

你可以使用 Lua 脚本来完成这项工作(与管道没有关系,相反,脚本在原子操作中运行):

-- HGETMULTIPLE.lua

local field = ARGV[1]

local res = {}
for i, key in ipairs(KEYS) do
    res[#res+1] = redis.call("HGET", key, field)
end

return res

redis-cli --eval HGETMULTIPLE.lua Object:100:RATE:9008 Object:100:RATE:9000 , properties.status

2018-06-19 09:33:37