2

ruby を使って、データ ウェアハウスから大量のデータを redis に挿入したいと考えています。

redis-documentationから、コマンドをバッチ処理するファイルを使用することが適切な方法であることがわかりました。

ただし、すべてのデータを取得したくはありません。ドライブに書き留めて (別名、バッチ ファイルを書き留めて)、さらに redis に送信できるようにします。

このステップをスキップする方法はありますか? ハードドライブではなくRAMに保存されている間に、redisに渡すことができる「memfile」を作成することは答えかもしれませんが、これが存在するかどうかは本当にわかりません。

ありがとう !

4

1 に答える 1

1
  1. あなたのデータは実際に十分な大きさですか?また、パイプラインを介してこれを行うだけでは十分な速度が得られないほど、速度要件が実際に要求されていますか? 確かに、全体をバッチ処理するか、Redis のプロトコルで書き直す方が高速ですが、要件が本当に極端でない限り、これに時間を無駄にしないでください。何百万もの HSET の挿入を数秒でパイプライン処理しました。必要のないものを構築するのに時間を無駄にする前に、少なくともこれを試してください。
  2. Rubyでこれを行う必要は絶対にありますか? 要件が非常に厳しいため、単純なパイプラインでは十分な速度が得られない場合は、データ ストリームから へのパイプだけを試してくださいredis-cli --pipe。これは次のようになります:sh getDataFromServer.sh | redis-cli --pipeであり、巨大なファイルをディスクに書き込む必要はありません (ただし、上記はネットワーク速度に依存するため、そうした方が高速になる可能性があります)。

TL;DR; 必要のない最適化は行わないでください。近い将来、パイプライン処理だけで済む場合は、それを実行してください。予見可能な将来のためにもう少し速度が必要な場合は、それで十分です. 実際に必要でない限り、Redis プロトコルを書き込んだり、Redis をディスクに書き込んだりしないでください。

于 2013-10-28T19:54:47.060 に答える