3

クローラーを書いています。訪問した URL を redis セットに保持し、redis リストを使用してジョブ キューを維持します。データが増えるとメモリが使い果たされ、私のメモリは 4G です。これらをredisなしで維持する方法は? これらをファイルに保存する場合、それらもメモリに保存する必要があるかわかりません。

それを保存するためにmysqlを使用すると、おそらくredisよりもはるかに遅いと思います。

私は 4G メモリを搭載した 5 台のマシンを持っています。redis クラスターをセットアップするための材料があれば、それも大いに役立ちます。クラスターをフェイルオーバーに設定するための資料がいくつかありますが、必要なのは、負荷分散されたクラスターを設定することです。

どうも

4

1 に答える 1

2

セットとリストの追加/削除の基本操作を行っているだけの場合は、temproxy/nutcrackerをご覧ください。これにより、すべてのノードを使用できます。

使用パターン自体に関しては、求人や URL を削除または期限切れにしていますか? システムにはどのくらいの繰り返しがありますか? たとえば、同じ URL を繰り返しクロールしていませんか? その場合、URL を前回のクロール時刻にマッピングするだけで済み、ジョブ キューの代わりに、前回の実行以降の新しい URL または特定のウィンドウ外の URL をプルすることができます。

クローラーが実際にどのように実行され、Redis と対話するかについての詳細がなければ、それが私が提供できることです。メモリが継続的に増加する場合は、DB をクリーンアップしていない可能性があります。

于 2013-03-02T19:51:32.597 に答える