【问题标题】:Lua table as redis argumentLua 表作为 redis 参数
【发布时间】:2017-04-22 12:21:04
【问题描述】:

我正在尝试从 Lua 脚本对 redis 进行MSETNX 调用。 如果它们不存在,我需要设置一些具有空值的键。

我试着这样做:

redis.call('MSETNX', KEYS) 和 KEYS {'key1', '', 'key2', ''} 传递给脚本。

但这不起作用,因为此调用需要单独的键和值作为参数传递,而不是表。

这行得通:

redis.call('MSETNX', 'key1', '', 'key2', '')

但是 KEYS 变量是动态的,所以我不能那样做。

如何调用MSETNX 而不必单独显式列出每个键?

-- 编辑--

是否可以 unpack 和“混合”值?

我可以将KEYS = {'key1', 'key2'}unpack 传递给:'key1', '', 'key2', '' 吗?谢谢!

【问题讨论】:

  • 我想你可能误解了我的问题。问题不是如何在 Redis 中运行它,而是如何将我的表格元素“分解”为单独的参数。

标签: lua redis lua-table


【解决方案1】:

在桌子上使用Lua的unpack,即:

redis.call('MSETNX', unpack(KEYS))

附注:不要使用 KEYS 作为表名,因为 Redis 使用该表将键名传递给脚本。

【讨论】:

  • 就是这样!解压成功了!太感谢了!顺便说一句,你介意看看我的编辑是否有另一件事困扰我吗?
  • 旁注:我试图做一个例子,我没有在 Lua 脚本中分配 KEYS 变量,但感谢您的警告。
  • 我不知道这样的事情,但是您可以轻松地遍历表格以在每个条目后插入空白,然后解压缩整个内容
  • 旁注:您应该更加小心示例 - 人们可能有一天会在这里尝试学习,并可能会被误导;)
  • 你说得对,我编辑了我的问题,试图避免任何混淆。感谢您的宝贵时间!
猜你喜欢
  • 2012-06-28
  • 1970-01-01
  • 2014-04-14
  • 2017-05-23
  • 2015-07-19
  • 2014-04-12
  • 2013-07-13
  • 2014-08-09
  • 2018-01-05
相关资源
最近更新 更多