次のコラム Redis チュートリアル では、Redis の適用シナリオとメリットとデメリットを紹介します。
Redis は、典型的な非リレーショナル データベースとして、現在エンタープライズ レベルのアプリケーションで広く使用されています。ストレージが少なく、アクセス量が膨大なシナリオに非常に適しており、すべてのデータがメモリ内にあるため、データへの高速アクセスが保証されます。 noSQL の一種として、memcached との違いと利点は何ですか? 見てみましょう。
MySQL Memcached などのストレージ アーキテクチャは業界で一般的に使用されていますが、アクセス数が増加し続けるにつれて、多くの問題が発生します。
1. MySQL はデータベースとテーブルを継続的に破棄する必要があり、Memcached も拡張し続ける必要があります;
2. Memcached と MySQL の間には特定のデータの不整合があります;
3. Memcached のヒット率が低くなりやすいと、MySQL に直接侵入してしまい、データベースが対応できなくなります;
Redis と言えば、多くの開発者のみ Memcached のような非リレーショナル データベースであり、データを K-V 形式で直接保存できることはわかっていますが、Memcached と比較すると、多くの違いもあります。
1. Redis は単純な K-V 形式のデータ ストレージをサポートするだけでなく、リスト、セット、ハッシュ、zset などのコレクション データのストレージもサポートします;
2. Redis はサポートしますリアルタイム データ バックアップ、タイムリーなダウンタイム、データの復元も可能;
3. Redis はデータの永続化をサポートし、メモリに保存されたデータをディスクに直接保存できます;
String、Hash、Set、List、SortedSet、pub/sub、Transactions。
1. 文字列: 文字列は、最も単純な Key-Value 形式で保存される変数です。ここで、「値」には数値または文字列を指定できます。実装としては、redisObject で参照される Redis 内にデフォルトで文字列を格納し、インクリメント、デクリメントなどのデジタル演算を検出すると、自動的に数値に変換して計算し、計算が完了すると、保存のために文字列に変換されます。
2. ハッシュ: ハッシュ ストレージは、キーと値のペアの値です。つまり、Key-Hash であり、Hash は k-v 構造です。Memcached を使用する場合は、ハッシュ全体をパッケージ化してメモリに保存する必要があります。特定の値をクエリする必要がある場合は、ハッシュ全体を取り出してから、対応する値を見つけます。 Redis はコマンドを通じて値を直接取得できるため、パフォーマンスが大幅に向上します。その実装原理: Redis は、メンバーが少ない場合はメモリを節約するために 1 次元配列に似たコンパクトなストレージを使用しますが、オブジェクトが多い場合は直接 HashMap ストレージに変換されます。
3. セット: セットは、順序付けされていない自然な重複排除セット、つまりキー セットです。さらに、交差や結合などのコレクションを直接操作するための一連のメソッドも提供します。これは、共通の友人や共通の関心事を探す機能に特に便利です。最下位層は HashMap によって実装され、値は null です;
4. リスト: リストは、FIFO の原理に従い、順序付けされた反復可能なコレクションです。最下層は二重リンク リストに依存して実装されます。 , したがって、通常の順方向と逆方向の二重検索をサポートします。リストを通じて最新の返信などの機能を簡単に取得できます。
5. SortedSet: Java の TreeSet に似ており、Set のソート可能なバージョンです。さらに、優先順位による並べ替えもサポートされており、これを実現するためにスコア パラメーターが維持されます。最下層は主に HashMap に依存して、挿入された値とスコアの優先順位の間のマッピングを維持することによって並べ替えを実装します。
6. pub/sub: メッセージ キュー mq と同様のパブリッシュとサブスクライブ。特定のキーをサブスクライブすることを選択できます。このキーがいくつかのメッセージを公開すると、このキーにサブスクライブされているすべてのオブジェクトがこのメッセージを受信できるようになります。主にチャットなどのリアルタイム メッセージング システムで使用できます。
7. トランザクション: NoSQL はトランザクションをサポートしていませんが、パッケージ実行の機能を提供します。つまり、このパッケージ内のすべてのコマンドを同時に実行する必要があります。また、特定のキーをロックすることもできます。このキーが変更されたことが検出された場合、キーは直接ロールバックされます。
Redis はメモリを使用してストレージを提供し、永続化機能を通じてデータを保存します。また、リクエストに対するシングルスレッド操作です。この一連の機能により、redis は非常に魔法の機能を備えています。
1. 最新の返信を見つけます。
従来のリレーショナル データベースを使用している場合は、select * from table where name="" order by time desc limit 100 を使用する必要があります。これによりデータベースのパフォーマンスが消費されますが、Redis を使用すると、Redis の ID を使用して直接作成できます。指定された長さ 1w のリスト。検索が必要な場合、リストの最後の 100 レコードが直接出力されます。
2. ランキングの問題
最もホットなトピック、ゲームのランキングなどの一般的なランキングの問題は、Redis を通じて簡単に達成でき、ZRank を使用して直接取得できます。
3. 期限切れデータの削除
Redis は完全に永続的なデータベースではありません。データに有効時間を追加できます。有効時間を超えると、Redis は対応するデータを自動的に削除します。
以上がRedisの適用シナリオ、メリット、デメリットを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。