Lua表作为redis参数

时间:2016-12-07 14:04:44

标签: lua redis lua-table

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

我尝试过这样做:

带有KEYS redis.call('MSETNX', KEYS)

{'key1', '', 'key2', ''}传递给脚本。

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

这有效:

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

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

如何在不必单独明确列出每个密钥的情况下调用MSETNX

- 编辑 -

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

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

1 个答案:

答案 0 :(得分:3)

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

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

附注:不要使用KEYS作为您的表名,因为Redis使用该表将密钥名称传递给脚本。