Redis |获取管道结果作为输入命令的映射

时间:2019-02-13 11:07:45

标签: redis

我是Redis的新手。在我当前的项目中,我们广泛使用redis,一次过提取1000多个密钥,而这太频繁了。

这些调用以前是顺序调用,我们试图用管道替换。

我们为此使用Spring RedisTemplate。

现在的挑战是,我们从redisTemplate得到的响应是对象列表。我们希望它与输入键对应。

现在,我们依赖于输入键顺序,我认为这不是非常可靠的事情。

有什么方法可以使Redis本身获得MAP格式的信息,以便我们可以直接使用响应。

1 个答案:

答案 0 :(得分:0)

没有这样的命令。相反,您可以使用Lua scripting实现目标。但是, Lua脚本还取决于输入键顺序

local vals = redis.call('MGET', unpack(KEYS))
local res = {}
for i = 1, #KEYS do
    res[i] = {KEYS[i], vals[i]}
end

return res

测试代码:

redis-cli mset a 1 b 2
OK

redis-cli --eval m.lua a b c ,
1) 1) "a"
   2) "1"
2) 1) "b"
   2) "2"
3) 1) "c"
   2) (nil)