如何一次性从Redis获取多个长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计296个文字,预计阅读时间需要2分钟。
如何使用Lua脚本实现multi-get操作?假设将name_last设置为Beckham,并将name_first设置为David。为了同时获取name_last和name_first,Lua脚本应该是什么?以下是一种可能的实现:
luafunction multiGet(key1, key2) redis.call('multi') redis.call('get', key1) redis.call('get', key2) return redis.call('exec')end
我们如何使用lua脚本来实现multi-get.假设我将name_last设置为Beckham并将name_first设置为David.为了同时获得name_last和name_first,lua脚本应该是什么?
我可以实现类似的东西:
eval "return redis.call('get',KEYS[1])" 1 foo
获取单个键的值.只是想知道如何通过只调用一次redis服务器来增强脚本部分以获取与所有键(或多个键)相关的值.
首先,您希望将要返回的字段发送到 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
本文共计296个文字,预计阅读时间需要2分钟。
如何使用Lua脚本实现multi-get操作?假设将name_last设置为Beckham,并将name_first设置为David。为了同时获取name_last和name_first,Lua脚本应该是什么?以下是一种可能的实现:
luafunction multiGet(key1, key2) redis.call('multi') redis.call('get', key1) redis.call('get', key2) return redis.call('exec')end
我们如何使用lua脚本来实现multi-get.假设我将name_last设置为Beckham并将name_first设置为David.为了同时获得name_last和name_first,lua脚本应该是什么?
我可以实现类似的东西:
eval "return redis.call('get',KEYS[1])" 1 foo
获取单个键的值.只是想知道如何通过只调用一次redis服务器来增强脚本部分以获取与所有键(或多个键)相关的值.
首先,您希望将要返回的字段发送到 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

