2017-02-17 6 views
1

私はluaスクリプトを使用してZINTERSTOREという結果を得ています。私が欲しいのは、このようなことの呼び出しでzsetsの動的な数LUA与えることができるようにすることです。ルアのtable.getn機能は、私はサイズnを取得することができますRedis Lua:redisコールの動的キー数

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

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

のようなものになります。私はthis可能な解決策を見てきましたが、私はテーブルの上に反復処理し、Redisのは毎回呼び出す行うにはしたくない

Lua redis() command arguments must be strings or integers 

:ここでの問題は、dynamic_key_listがリストの場合、Redisのは大声で、早期に泣くということです私は潜在的に10〜15の鍵を持つことができるので、私は余裕がありません。別の方法がありますか?

答えて

4

可変パラメータを持つ関数にルアアレイ/テーブルを渡すには、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)) 
関連する問題