私はRedisを使用しておらず、使用したことがないため、Redisについては答えることができません。
ただし、何らかの理由で、Facebook のような XMPP クライアントのようなものを使用していない場合: http://www.ibm.com/developerworks/xml/tutorials/x-realtimeXMPPtut/section3.html (別名 Jabber) チャットこの状況での純粋な MongoDB ソリューションについて説明します。
MongoDB は、ドキュメントとクエリをキャッシュする手段として OS の LRU を使用しますが、直接クエリ キャッシュを提供することはありませんが、賢ければ必要ありません。代わりに、すべてのクエリを RAM から直接読み取るだけです。これを念頭に置くと、Redis はコンピューターの RAM も使用するため、MongoDB は Redis と同じくらい高速になる可能性があります。
最適化されたクエリでの 2 つの間の速度は、ごくわずかだと思います。速度の真の尺度は、スキーマ、インデックス、クラスターのセットアップ、および実行するクエリによって決まります。
あなたのコメントを考慮して、ここにストレージサイズに関するメモ:
ただし、mongodb のフラッシュに関する問題は、当初よりも大きくなっています。明らかに、mongo で何かを削除すると、その参照のみが削除されるため、4 MB のドキュメントを削除しても、それほど多くのスペースは解放されません。そのメモリを実際に解放する唯一の方法は、実行中に基本的にdbをブロックするdbRepair(またはこの行の何か)を実行することです....
MongoDB がどのように機能するかについて、いくつかの誤解があるようです。
このリンクが役に立ちます: http://www.10gen.com/presentations/storage-engine-internals過剰なディスク容量が使用される理由のいくつかを説明し、あなたが持っている誤解についても説明します。コンピューターの仕組みと、MongoDB がスペースを解放して再利用する方法。
MongoDB は、レコード レベルで領域を解放しません。代わりに、その「空の」レコードを送信し (プレゼンテーションで説明するように、レコードとドキュメントは 2 つの異なるものです)、それを削除されたバケット リストに押し込み、新しいドキュメント (または移動された更新されたドキュメント) が作成されたときにそのスペースを再利用します。 )がやってきて、そのスペースに収まります。
repairDB
このレベルで MongoDB がどのように機能するかを注意深く理解していない場合、断片化後に何らかのパフォーマンスを維持するためにかなり定期的に実行する必要があることは事実です。
メモリの扱いについて。私が言ったように、OSはこれを処理します。OS がいつメモリを解放するかについての適切な説明は、ウィキペディアにあります: http://en.wikipedia.org/wiki/Paging
必要なすべてのデータを格納するのに十分な RAM がなくなるまで、空のページ フレームを取得するプロセスでは、RAM から別のページを削除する必要はありません。
そのため、OS がページの削除を処理します。その部分については気にする必要はありません。代わりに、ワーキング セットを RAM に収めることに注意する必要があります。
メッセージの保存が心配で、実際には保存したくない場合、つまりメッセージを「フラッシュ」したい場合は、MongoDB の後のインストールに付属する TTL 機能を実際に使用できます: http://docs.mongodb.org/manual /tutorial/expire-data/これにより、基本的にメッセージをコレクションから削除するタイムアウトを設定できます。
したがって、個人的には、MongoDB を適切にセットアップして Facebook のようにメッセージングとチャットを行うことができれば、もちろん、彼らは XMPP プロトコルを使用し、検索のためにメッセージを Cassandra にアーカイブしますが、彼らのようにそれを行う必要はありません。同じ目標を達成する方法。
これが理にかなっていることを願っています。私はぐるぐる回っていません。少し長い答えです。