比如redis哈。 你提交一个bgrewriteaof。会立马得到一个回复。即程序与redis的连接结束。redis自己在默默的执行操作。
mongodb有木有类似的命令参数?比如我remove掉一批object。尼玛等了30多分钟……= =。难道就木有 一个 db.collection.remove({param},{background:true})?= =
高洛峰2017-04-21 11:20:58
ここを参照: http://docs.mongodb.org/manual/reference/write-concern/
MongoDB Default w=1
。你可以传个 w=0
は、書き込み操作が完了するのを待ちたくないことを MongoDB に伝えます。
PHPz2017-04-21 11:20:58
これを「非同期リターン」といいます。一部の言語 (Java など) には mongodb 非同期ドライバーがあります。mongodb async + 使用する言語を参照してください。
黄舟2017-04-21 11:20:58
現在、redis はインメモリ データベースを使用する傾向にありますが、redis は永続化戦略を構成でき、メモリ内のデータをハードディスクに永続化し、次回の再起動時に自動的に復元できます。 bgrewriteaof は、redis が AOF 永続化戦略を採用している場合に、管理者が AOF 再書き込みを手動でトリガーできるようにする、redis によって提供されるコマンドです。Redis 2.4 以降、AOF 再書き込みは Redis によって自動的にトリガーされます。このような Redis サーバーのメインスレッドは、操作コマンドを受け入れるたびにデータをメモリと AOF に書き込み、Redis がそのデータをハードディスクに自動的に fsync します。これにより、ユーザーの操作がブロックされることはありません。参照: Redis 永続性
Mongodb はドキュメントベースのデータベースとして位置付けられ、分散アーキテクチャをネイティブにサポートします。ドキュメント データベースとしての永続性の保証は、操作が成功する前にすべてのデータがハード ディスクに書き込まれる必要があることです。分散アーキテクチャは、永続化操作にさらに複雑な問題をもたらします (複数のサーバー間のデータ同期の確保、分散書き込み戦略など)。
要約すると、Mongodb が提供する特定の機能を期待しないでください。これは、この 2 つは焦点が異なるためです。Redis は高性能 I/O に重点を置いているのに対し、mongodb は大量のデータのストレージに重点を置いています。パフォーマンスを考慮しながらデータを作成します。
あなたの説明から判断すると、mongodbを要求する操作は厳しくブロックされています。 mongodb 操作をリクエストするときに、ニーズを組み合わせて WriteConcern をアタッチして、許容できる書き込み操作戦略を定義することをお勧めします。参照: WriteConcern