gpt4 book ai didi

lua - Redis 路亚 : dynamic number of keys in redis call

转载 作者:IT王子 更新时间:2023-10-29 06:08:57 27 4
gpt4 key购买 nike

我正在使用 lua 脚本获取 ZINTERSTORE 结果。我想要的是能够在调用中为 lua 提供动态数量的 zsets,以便:

redis.pcall('ZINTERSTORE', result, n, keys[1], keys[2], keys[3], keys[4], keys[5],  'AGGREGATE', 'MAX')

变成这样:

redis.pcall('ZINTERSTORE', result, n, dynamic_key_list, 'AGGREGATE', 'MAX')

Lua 的table.getn 函数让我得到大小n。这里的问题是,如果 dynamic_key_list 是一个列表,那么 redis 会大声喊叫:

Lua redis() command arguments must be strings or integers

我看过 this可能的解决方案,但我不想遍历表并每次都调用 redis,因为我可能有 10-15 个键,这是我负担不起的开销。还有别的办法吗?

最佳答案

为了将 lua 数组/表传递给采用可变参数的函数,您需要 unpack 函数。

-- put all arguments of redis.pcall into a lua array/table
local args = {'ZINTERSTORE', result, n}
for i, v in ipairs(dynamic_key_list) do
table.insert(args, v)
end
table.insert(args, 'AGGREGATE')
table.insert(args, 'MAX')

-- unpack the table and pass to redis.pcall
redis.pcall(unpack(args))

关于lua - Redis 路亚 : dynamic number of keys in redis call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42291690/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com