1. はじめに
ここ数年、高い同時実行性と大規模なデータ ストレージ ソリューションというと、私たちが思い浮かべるのは NoSQL データベースとそれに対応するデータベースです。製品は自然に大きな生命力を発揮します。多くの製品の中でも、Redis、MongoDB、BerkeleyDB、CouchDB が際立っています。以下に簡単に説明しましょう。
(学習ビデオ共有: redis ビデオ チュートリアル )
1. BerkeleyDB は非常に人気のあるオープンソースの組み込みデータベースであり、多くのケースでストレージ エンジンに使用できます。 , BerkeleyDB は、Oracle に買収される前に MySQL のストレージ エンジンとして使用されていましたが、この製品は同時実行性のスケーラビリティに優れ、トランザクションとネストされたトランザクション、大規模なデータ ストレージなどの重要な機能をサポートし、リアルタイムの保存に使用されることが予測できます。利用価値が非常に高いデータです。ただし、この製品のライセンスは GPL であるため、あらゆる場合に無料で使用できるわけではないことに注意してください。
2. MongoDB は、Oriented-Document データベース サーバーとして定義されており、BerkeleyDB とは異なり、このデータベースは独立して実行でき、他のリレーショナル データベース サーバーと同様に関連するデータ サービスを提供します。この製品の公式ドキュメントから、MongoDB は主に同時実行性の高いフォーラムやブログ Web サイトに適していることがわかります。これらの Web サイトの主な特徴は、同時アクセスの多さ、読み取りの増加と書き込みの減少、大量のデータ、単純な論理関係です。 、およびドキュメント データをプライマリ データ ソースとして使用するなど。 BerkeleyDB と同様に、この製品のライセンスは GPL です。
3. Redis は代表的な NoSQL データベース サーバーであり、BerkeleyDB と比較して、サービス プログラムとして独自のサーバー ホスト上で独立して実行できます。多くの場合、人々は Redis を単に Key/Value データベース サーバーとみなしますが、これは当てはまりません。現在のバージョンでは、Redis は Key/Value に加えて、List、Hash、Set、Ordered Set などのデータ構造もサポートします。なので用途も広がります。この誤解については、Redis 公式 Web サイトでも対応する説明が提供されています。上記 2 つの製品とは異なり、Redis のライセンスは Apache ライセンスであり、現時点では完全に無料です。
4. memcached、データ キャッシュ サーバー。なぜここでこの商品の説明が行われるのでしょうか?使い方としては Redis に最も似ていると思うので、非常にシンプルです。これは Redis に関する技術ブログ シリーズであるため、これら 2 つの製品を簡単に比較します。まず、両者の最大の違いについて説明します. Memcached はデータ キャッシュ サービスのみを提供します. サーバーがダウンすると、以前にメモリにキャッシュされていたすべてのデータが失われます. したがって、memcached はいかなる形式のキャッシュ サービスも提供していないことがわかります。データ永続化機能 Redis はそのような機能を提供します。さらに、Redis は、Hash や Set など、より豊富なデータ ストレージ構造を提供します。類似点としては、完全に無料であることと、提供されるコマンド形式がよく似ていることの 2 点が挙げられます。
2. Redis の利点:
1. 他の NoSQL 製品と比較して、Redis は非常に使いやすいため、同様の製品の使用経験がある開発者にとっては、Redis を使用できます。 2 日または数時間で独自のプラットフォームを構築できます。
2. 多くの一般的な問題を解決すると同時に、インデックス エンジン、統計ランキング、メッセージ キュー サービスなど、いくつかのパーソナライズされた問題に関連するソリューションも提供します。
3. 現在のバージョンの Redis の主な問題:
1. 正式バージョンでは Windows プラットフォームのサポートが提供されません。リリースされた正式バージョンは Unix 系プラットフォームと MacOSX プラットフォームのみをサポートします。
2. クラスターのサポートは提供されていませんが、公式 Web サイトによると、この機能はバージョン 2.6 で追加される予定です。
3. パブリケーション/サブスクリプション機能では、マスターがダウンした場合、スレーブは自動的にマスターに昇格することができません。
4. リレーショナル データベースとの比較:
Redis の現在のバージョン (2.4.7) では、5 つの異なるデータ型がサポートされていますが、そのうちの 1 つの型のみです。データ型はKey-Value構造とみなすことができ、その他のデータ型にはそれぞれの特性に応じた適用シナリオがあり、具体的な詳細については、このシリーズの後半のブログで説明します。
リレーショナル データベースと比較すると、ストレージ構造が比較的単純であるため、Redis は複雑な論理関係を十分にサポートしていませんが、Redis に適用できるシナリオでは、これを使用して効率を大幅に向上させることができます。それでも、Redis は、同じ接続で異なるデータベースを開くことを選択できるなど、データベースが持つべきいくつかの基本的な概念を提供します。ただし、違いは、Redis のデータベースは番号で名前が付けられていることです。開かれたデータベースは 0 です。プログラムの実行中にデータベースを切り替える予定がある場合は、Redis select コマンドを使用して、select 1 などの他のデータベースを開くことができます。後でデフォルトのデータベースに戻したい場合は、select 0 を実行するだけです。
データストレージに関しては、Redis は既存の NoSQL データベースの主流の考え方に従っており、つまり、Key はデータ取得用の一意の識別子であり、単純にリレーショナル データベースのインデックスのキーとして理解できます。 、および値はデータ ストレージとして使用されます。メイン オブジェクトです。各値にはキーが関連付けられています。これは、インデックス内の物理データがデータ テーブルに格納される場所に似ています。 Redis では、Value は、Json、XML、シリアル化されたオブジェクトのバイト ストリームなど、任意の形式でデータを格納するために使用されるバイナリ バイト ストリームとみなされます。そのため、RDB の BLOB 型フィールドとして想像することもできます。データ クエリを実行するとき、クエリの条件として Key のみを使用できることがわかります。もちろん、Redis で提供されるいくつかのテクニックを適用して、Value を他のデータのキーとして使用することもできます。この知識については、次の記事で説明します。以下のブログをご紹介します。
5. メモリ データを保持する方法:
デフォルトでは、Redis は現在のデータベース内のデータ変更の数を参照し、特定のしきい値に達すると、データベースのスナップショットが作成されます。ディスク上に保存される場合は、構成ファイルを通じてしきい値を設定できます。通常、定期的に保存するように Redis を設定することもできます。たとえば、1,000 を超えるキー データが変更されると、Redis は 60 秒ごとにデータ永続化操作を実行します。デフォルト設定では、データ変更が 9 件以下の場合、Redis は 15 分ごとに保持されます。
上記のソリューションから、この方法を採用すると、Redis の実行効率が非常に効率的になることがわかります。新しいデータ変更が発生するたびに、キャッシュされたデータが変更されたときのみ、そのような変更が行われます。すぐにはディスクに永続化されないため、ほとんどの変更操作でディスク IO が回避されます。ただし、多くの場合、物事には 2 つの側面があり、この方法では効率は向上しますが、データの信頼性は失われます。メモリ スナップショットがディスクに保存される前に Redis が配置されているサーバーがダウンした場合、ディスクに書き込まれていない変更されたデータはすべて失われます。データの高い信頼性を確保するために、Redis は別のデータ永続化メカニズムである Append モードも提供します。 Redis サーバーがこのように構成されている場合、データの変更が発生すると、その変更はすぐにディスクに保存されます。
関連する推奨事項: redis データベース チュートリアル
以上がRedis入門学習マニュアル共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。