2012-03-08 3 views
6

私は赤ちゃんのために非常に新しいですし、まだそれで遊んでいます。私は私のプロジェクトに関連するかどうかを確認するためにテストしたいが、私が実行している特定のコマンドについてはわからない。 SOのユーザーは、パイプラインとトランザクションを使用することによるパフォーマンス上の利点を私に納得させました。以前のものに依存する複数のコマンドをパイプラインでredisできますか?

は基本的に私は、私はちょうどパイプライニングのための良い候補のように思える(結果を待つ必要が発行しないようにするという二つの文を持っていることは次のようになります。

Does valueX exist? 
If it does insert valueY 

そのかなり単純だそう私が探していたすべての方法は、ValueXが存在するかどうかの応答を待っているように見えます。私のプログラムの10億回以上のループをやっているので、停止するようにします。

これは可能ですか?私はJavaを使用していますが、どのクライアントライブラリ(jedisまたはjredis、まだテスト中)で解決していません。私は実際には完全にredisに解決されていませんが、非常に傾いているそれに向かって大きく(私がスピードを上げていることには良いようです)、どんな提案も受け入れられます。

答えて

6

いいえ、そのようなことを達成する瞬間はありません。あなたが求めているのは、現時点では欠けている機能ですが、Redisの2.6バージョンで利用可能になります。 LUAスクリプティングと呼ばれています。以前のコマンドに依存するサーバーコマンドを、クライアントでフェッチする必要なく、すべて1つで実行できます。詳細はhereを参照してください。

+0

ありがとうございました。来るのを見てうれしいですが、私は本当に私のプログラムに自分のようなものを作ることができると思っていたので、本当に待っていません。ここではロジックがあります。私はlookup/writeの値をペアに送信し、要求をキューに入れてトランザクションで実行するという方法がありますか?この部分がキューに入れられている間、私のプログラムの残りの部分は続けられますか? –

+1

検索コマンドのバッチをパイプライン化し、結果を待ってからいくつかの書き込みコマンドをパイプラインすることができます。結果が利用可能になるまでブロックしないように、別のスレッド/プロセスで実行できます。 – hymloth

+0

良い提案、私はそのショットを与えることを試みる。ありがとう! –

関連する問題