redis、memcache、mongoDB有哪些区别?例如:性能、可靠性、数据一致性等方面的区别。
PHP中文网2017-04-22 08:58:35
以下の内容は、共有するために投稿された同僚の要約です:
Memcached
Memcached の利点:
Memcached はマルチコアを利用でき、単一インスタンスのスループットは非常に高く、数十万 QPS に達します (キーと値のバイト サイズとサーバー ハードウェアのパフォーマンス、日常環境でのピーク QPS に応じて異なります) 4~6wくらいです)。最大の積載量に適しています。
セッションハンドルとして直接設定をサポートします。
落とし穴はほとんどありません。
Memcached の制限:
豊富なデータ型をサポートできる Redis とは異なり、単純なキー/値データ構造のみをサポートします。
データを永続化することはできず、データをバックアップすることもできず、キャッシュのみに使用でき、再起動するとすべてのデータが失われます。
データ同期を実行できず、MC 内のデータを他の MC インスタンスに移行できません。
Memcached のメモリ割り当てでは、スラブ割り当てメカニズムを使用してメモリを管理します。値のサイズ分布に大きな違いがあると、メモリ使用率が低下し、使用率が低い場合でもキックアウトなどの問題が発生します。ユーザーは価値設計に注意を払う必要があります。
Redis
Redisの利点:
string (文字列)、list (ダブルリンクリスト)、dict (ハッシュテーブル)、set (セット)、zset (ソートセット)、hyperloglog (カーディナリティ推定) など、さまざまなデータ構造をサポートします
永続化操作をサポートし、データ バックアップまたはデータ リカバリ操作のために AOF および RDB データをディスクに永続化できます。これは、データ損失を防ぐためのより良い方法です。
レプリケーションによるデータ レプリケーションのサポート。マスター スレーブ メカニズムを通じて、データのリアルタイム同期レプリケーションを実行できます。マスター スレーブ メカニズムは、Redis が HA を実行するための重要な手段です。
シングルスレッドのリクエストでは、すべてのコマンドがシリアルに実行され、同時実行状況でのデータの整合性の問題を考慮する必要がありません。
メッセージのサブスクリプションと通知に使用できるパブリッシュ/サブスクライブ メッセージ サブスクリプション メカニズムをサポートします。
単純なトランザクション要件をサポートしていますが、業界での使用例はほとんどなく、まだ成熟していません。
Redis の制限事項:
Redis は単一スレッドのみを使用でき、そのパフォーマンスは CPU パフォーマンスによって制限されるため、単一インスタンス CPU は 1 秒あたり最大 5 ~ 6w QPS に達します (データ構造、データ サイズ、サーバー ハードウェア パフォーマンスによって異なります)。日常環境でのQPSは約1~2w程度です。
単純なトランザクション要件をサポートしていますが、業界での使用シナリオが少なく未成熟であるため、長所と短所の両方があります。
Redis は文字列型でより多くのメモリを消費します。 dict (ハッシュ テーブル) を使用してストレージを圧縮し、メモリ消費を削減できます。
:) 以下は私の個人的な追加です
Mc と Redis はどちらも Key-Value タイプであり、異なるデータ セット間の関係を確立するのには適しておらず、クエリ検索にも適していません。たとえば、redis キー pattern の照合操作は、redis のパフォーマンスに悪影響を及ぼします。
モゴデータベース
mogodb はドキュメント データベースです。まず、xml、json、bson 型のデータを格納できる文書データベースについて説明します。これらのデータは自己記述的であり、階層ツリー状のデータ構造を表します。 Redis はハッシュを使用して単純なリレーショナル データを保存できます。
mogodbにはjson形式のデータが格納されます。
適切なシナリオ: イベント記録、コンテンツ管理、またはコメント システムなどのブログ プラットフォーム。
nosq には現在多くの製品があり、建築家の選択は主に次の 2 つの要素によって決まります。
1) アプリケーションの使用シナリオに適しています。たとえば、コメント システムは mogodb を使用するのに適しており、mc も実装できます (アプリケーションはデータを json に変換して保存しますが、一部のデータを更新するのは不便です)
2) チームは使い慣れたテクノロジーを開発します。たとえば、チームは mc を使用しているため、redis の代わりに mc を選択することが制限されます。
開発チームが mogodb を使用しており、kv nosq に適したシナリオで mogodb を選択し続けるという中程度から深刻な状況もあります。
みんなにおすすめの本: <NoSQL Essence>
黄舟2017-04-22 08:58:35
redis と memcache は 2 つのキャッシュ メカニズムであり、主にデータベースの負荷を軽減し、アクセス速度を向上させるために使用されます。 Redis はキャッシュをハードディスクに保存し、コンピュータを再起動して呼び出しを続けることができます。また、Memcache には単純にメモリにキャッシュされる機能があり、単一の機能で高効率です。 mongoDBに関しては、これは単なるデータベースです