我们如何使用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] 删除。
我来说两句