3

ここ数日、 redisをいじっています。次のような複合コマンドを実行することは可能ですか:

MGET ZRANGE ranks 0 1

ドキュメント、この古い投稿、またはテストから決定的な答えが見つかりませんでした:

redis 127.0.0.1:6379> ZRANGE ranks 0 1
1) "One"
2) "Two"
redis 127.0.0.1:6379> MGET One Two
1) "1"
2) "2"
redis 127.0.0.1:6379> MGET ZRANGE ranks 0 1
1) (nil)
2) (nil)
3) (nil)
4) (nil)
4

3 に答える 3

5

Redis のビルトイン LUA スクリプト サポートにより、コマンドを効果的に連鎖させることができます。http://redis.io/commands/evalを参照してください。まさにあなたが探しているものではありませんが、おそらくこれで十分でしょう。

簡単な例:

redis> set foo bar
OK
redis> set bar baz
OK
redis> eval "return      redis.call('get',redis.call('get','foo'))" 0
"baz"
于 2013-03-26T21:43:50.370 に答える
1

次のように Redis lua EVAL コマンドを使用して、1 つのコマンドですべてを実行できます。

EVAL 'local ids = redis.call("ZRANGE", "myset", 0, 100); 
return redis.call("MGET", unpack(ids));' 0

パフォーマンスを向上させる最善の方法は、キーを使用し、キャッシュされたスクリプトを使用することです。完全な手順はこちら: http://redis.io/commands/eval

于 2013-04-20T15:33:52.817 に答える
1

このコマンドは、 、、、およびMGET ZRANGE ranks 0 1という名前のキーの値を取得するため、機能します。したがって、4 つの応答が得られます。redis には複合コマンドの概念はありません。一部のクライアントは、コマンド パイプラインをサポートしています。"ZRANGE""ranks""0""1"(nil)

于 2013-03-27T21:57:22.150 に答える