一站式多项-Redis

user_ab

我们如何使用lua脚本实现多重获取。

假设我已经设置name_last为贝克汉姆和name_first大卫。应LUA脚本是为了同时获得什么name_last,并name_first一气呵成?

我可以实现类似:

eval "return redis.call('get',KEYS[1])" 1 foo

获取单键的值。只是想知道如何通过仅一次调用redis server来增强脚本部分以获得与所有键(或多个键)相关的值

所有工人都是必不可少的

首先,您要发送要返回到EVAL的字段0表示没有,KEYS因此可以从访问这些参数ARGV):

eval "..." 0 name_last name_first

其次,您可以使用MGET查询各个字段的值

local values = redis.call('MGET', unpack(ARGV))

第三,您可以将值映射回字段名称(每个的索引对应于同一字段):

local results = {}
for i, key in ipairs(ARGV) do
  results[key] = values[i]
end
return results

您最终将执行的命令将是:

eval "local values = redis.call('MGET', unpack(ARGV)); local results = {}; for i, key in ipairs(ARGV) do results[key] = values[i] end; return results" 0 name_last name_first

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章