我们如何使用lua脚本来实现multi-get。
假设我已经设置name_last为贝克汉姆和name_first大卫。应LUA脚本是为了同时获得什么name_last,并name_first一气呵成?
我可以实现类似的东西:
eval "return redis.call('get',KEYS[1])" 1 foo
Run Code Online (Sandbox Code Playgroud)
获取单个键的值。只是想知道如何通过调用 redis server来增强该脚本部分以获取与所有键(或多个键)相关的值。
首先,您想要将要返回的字段发送给EVAL(0表示没有KEYS,因此可以从 访问这些参数ARGV):
eval "..." 0 name_last name_first
Run Code Online (Sandbox Code Playgroud)
其次,您可以使用MGET查询各个字段的值:
local values = redis.call('MGET', unpack(ARGV))
Run Code Online (Sandbox Code Playgroud)
第三,您可以将值映射回字段名称(每个值的索引对应于同一字段):
local results = {}
for i, key in ipairs(ARGV) do
results[key] = values[i]
end
return results
Run Code Online (Sandbox Code Playgroud)
您最终将执行的命令是:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6355 次 |
| 最近记录: |