19

最近、多くの人がRedisをキャッシュとして使用しているのを見てきましたが、Mongoではどうでしょうか。Redisがmemcacheのようにインデックスに有効期限を設定できると私が知る限り、それ以外の場合、これにMongoを使用しない理由はありますか?

MySQLで大規模な結合を行っており、選択後にデータを変更しているので、質問します。私はすでにサイトの他の部分でmemcacheを使用していますが、これをMongoに保存すると、キャッシュされたデータに対して地理空間検索を実行できるようになります。

4

3 に答える 3

14

多くの人がMongoDBを低中グレードのキャッシュに使用しており、それは非常にうまく機能します。

アドホッククエリ機能を介して単純なキー値ストアよりも多くの機能を提供するため、memcacheやredisほど純粋ではありません(データの挿入と取得に時間がかかる場合があります)。

非常に高いパフォーマンスを実現できますが(ワーキングセットは結局RAMにあります)、データモデルはより重くなります。

ただし、反対に、MongoDBは、Redisとは異なり、後で必要になる可能性が最も高いタイプのデータに対して(ほとんどの開発者にとって)はるかに理にかなっている永続化レイヤーを提供します。

于 2012-04-25T14:49:42.580 に答える
11

MongoDBとRedisの最大の違いは、Redisは通常データベース全体をメモリに保存することです。MongoDBは、メモリマップトファイルを使用して、すべてがメモリ内にあるように見せかけ、必要に応じてOSページのビットをディスクに出し入れします。OSがすべてをメモリに保持できる場合、パフォーマンスは多少似ています。

于 2012-04-26T02:57:11.233 に答える
3

キャッシングと言うとき、スピードが頭に浮かびます。ここでの目標は、できるだけ速く何かを設定して取得することです。この意味で、redisはmongodbよりも高速です。ただし、mongodbがキャッシュされたデータの地理空間検索を実行するのに適していることがわかった場合は、それを使用してもかまいません。もちろん、時間をかけてredisに同じものを実装し、ベンチマークを行って何が得られるかを確認することもできます。

于 2012-04-25T14:48:53.857 に答える