説明するシナリオの例を次に示します。
いくつかのキー=>値のペアがあるとします:
hmset thing1 name 'a thing' color red
hmset thing2 name 'another thing' color green
hmset thing3 name 'also a thing' color blue
そして、値がキー名であるリスト:
lpush things thing1
lpush things thing2
lpush things thing3
私の目標は、間接参照を使用してさまざまなものから値を取得することです。
thingsArray = lrange things 0 2
for each thing in thingsArray
result.push(hmget thing name color)
しかし、これに対するペナルティは余分な往復です。これはパイプライン処理である程度軽減できることはわかっていますが、Lua スクリプトを使用した 1 回の往復で可能になることを期待していました。次のようなものです:
eval superAwesomeScript 1 things 0 2
問題は、Lua スクリプトを呼び出しているときに、"things" リストの lrange 呼び出しによってどのキーが返されるかわからないことです。Lua スクリプトでこのようにデータにアクセスすることは、Redis クラスターの将来を保証するために提案されたルールに違反しますか?
私は Redis にはかなり慣れていませんが、Lua にはまったく慣れていないので、私の目標から外れている場合は、そのことを教えてください。また、複数のラウンドトリップに関する私の主な懸念は、特に水平にスケーリングされたクラスター内でのネットワーク io です。したがって、まったく異なるソリューションも歓迎されます。