パフォーマンスのために、私はRedisのホップ数を最小限に抑える必要があります。私はスクリプトに渡すことができますどのように複数のHMSETからRedisへのLuaスクリプト
HMSET myhash1 field1 "Hello" field2 "World"
HMSET myhash2 field1 "Hello" field2 "World"
HMSET myhash3 field1 "Hello" field2 "World"
...
HMSET myhashN field1 "Hello" field2 "World"
:私はC++コードからHMSETを複数回呼び出していると私は調査しています、Luaのスクリプトを使用してこれを変更することpoosibleある場合やRedisの1回の呼び出しで複数のRedisのハッシュキーを設定しました複数のハッシュキーと複数のフィールド/値?
== UPDATE Itamarハーバーのコメントに基づいて、私は私の問題は、KEYSとARGVの値の間に不足しているスペースをカンマであったことを考え出した -
私は次のスクリプトになってしまった:
local k = 1
for i=1, #KEYS do
if redis.call('hmset', KEYS[i], ARGV[k], ARGV[k+1], ARGV[k+2], ARGV[k+3]) == 1 then
return 1
end
k = k + 4
end
return 0
redis-cli --eval /var/tmp/script.lua myhash1 myhash2 , field1 "Hello" field2 "World" field1 "Hello" field2 "World"
さらに、フィールド名を繰り返したり、各キーに任意の数のフィールド/値を渡したりすることを避けるために最適化できるかどうかはわかりません。
こんにちは@Itamar Haber、ご返信ありがとうございます。残念ながら、私が使用しているnekipelov/redisclientはパイプライン処理をサポートしていません。 – gliatsos
スクリプトを使用する;)例が必要ですか? –
私の主な問題は、KEYSのハッシュキーとフィールド値をARGVに渡す方法です。これまでのすべての私の試みはKEYSを満たしていますが、ARGVは空です。あなたは私を例に紹介できますか?ありがとうございました! – gliatsos