Lua table 作为 redis 参数
Lua table as redis argument
我正在尝试从 Lua 脚本对 redis 进行 MSETNX
调用。
如果它们不存在,我需要用空值设置一些键。
我试过这样做:
redis.call('MSETNX', KEYS)
将 KEYS {'key1', '', 'key2', ''}
传递给脚本。
但这不起作用,因为此调用需要单独的键和值作为参数传递,而不是 table。
这个有效:
redis.call('MSETNX', 'key1', '', 'key2', '')
但是 KEYS 变量是动态的,所以我不能那样做。
如何调用 MSETNX
而不必单独显式列出每个键?
-- 编辑--
是否可以 unpack
和“混合”值?
我可以将 KEYS = {'key1', 'key2'}
和 unpack
传递给:'key1', '', 'key2', ''
吗?谢谢!
在table上使用Lua的unpack
,即:
redis.call('MSETNX', unpack(KEYS))
旁注:不要使用 KEYS
作为 table 的名称,因为 Redis 使用 table 将键名传递给脚本。
我正在尝试从 Lua 脚本对 redis 进行 MSETNX
调用。
如果它们不存在,我需要用空值设置一些键。
我试过这样做:
redis.call('MSETNX', KEYS)
将 KEYS {'key1', '', 'key2', ''}
传递给脚本。
但这不起作用,因为此调用需要单独的键和值作为参数传递,而不是 table。
这个有效:
redis.call('MSETNX', 'key1', '', 'key2', '')
但是 KEYS 变量是动态的,所以我不能那样做。
如何调用 MSETNX
而不必单独显式列出每个键?
-- 编辑--
是否可以 unpack
和“混合”值?
我可以将 KEYS = {'key1', 'key2'}
和 unpack
传递给:'key1', '', 'key2', ''
吗?谢谢!
在table上使用Lua的unpack
,即:
redis.call('MSETNX', unpack(KEYS))
旁注:不要使用 KEYS
作为 table 的名称,因为 Redis 使用 table 将键名传递给脚本。