加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

lua – 一次性多次获取 – Redis

发布时间:2020-12-14 21:45:46 所属栏目:大数据 来源:网络整理
导读:我们如何使用lua脚本来实现multi-get. 假设我将name_last设置为Beckham并将name_first设置为David.为了同时获得name_last和name_first,lua脚本应该是什么? 我可以实现类似的东西: eval "return redis.call('get',KEYS[1])" 1 foo 获取单个键的值.只是想知
我们如何使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读