Redisのは、一般的なシナリオを解決します

序文

Redisのは、今、その高性能な特性のほとんどのケースでは、より多くの様々なシステムで使用されるキーと値のストレージシステムは、多くの場合、ここで遭遇Redisの使用シナリオで導入キャッシュ使用、として扱われています。

二つの特徴のRedis

製品の使用シナリオは確かにRedisのをどの機能、製品の特性に最初のリストが必要になります。

  • 良好なパフォーマンスを読み書き
  • 持久化
  • 豊富なデータタイプ
  • シングルスレッド
  • データが自動的に有効期限が切れています
  • パブリッシュおよびサブスクライブ
  • 分散

ここではいくつかのシナリオ、Redisの下に言ったアプリケーションの異なる寸法です

3つのシナリオ

高性能キャッシュとして適し

Redisのキャッシュは、最も一般的なシナリオであるので、主な理由は、優れRedisの読み取りと書き込みの性能を、それをすべて使用しています。そして、成長優先サーバー・サイド・キャッシング・コンポーネントとして、memcachedのを置き換えるがあります。また、Redisの内部の業務を効果的にデータの一貫性を確保することができる時間の使用に支持されています。データを保存するには2つの方法がありますが、キャッシュとして使用します。

  • データがない場合1は、読む前に、Redisのを読んだことのRedisにデータベース、プルアップデータを読み込み、にアクセスしてください。
  • Redisのを書きながら、2、データを挿入します。

オプション1:実装が簡単、しかし、2つの注意点があります:
1は、キャッシュ破壊を避けます。(データベースのデータをヒットする必要がRedisのデータにつながっていないしていない、とデータベースをヒットされています。)
2、リアルタイムデータは比較的狭くなります。

オプション2:リアルタイムデータは強いが、統一された処理を開発することは容易ではありません。

もちろん、二つの方法は、実際の状況を適用します。以下のような:リアルタイムデータの要件に適したプログラムは特に高い場面ではありません。オプションIIは、辞書テーブルにデータを格納されたデータの量を適用します。

より豊富なデータ形式、機能豊富なアプリケーション・シナリオ

Redisのは、他のキャッシュに比べて、それは複数のデータ型をサポートすることで、非常に大きな利点があります。

そのようなシナリオID、詳細の説明文字列データ型、文字列、最も単純なKVのhashhash記憶フォーマット、フィールドの値と値。リスト単純なリスト、オーダーリスト、または順不同リストを設定された第1端部支持挿入データ、交差点や労働組合のための高速検索、違いソートセット順序集合を処理

実際には、機能の上記のデータ型によって、基本的には、適切なアプリケーションシナリオを考えることができます。

  • 適当string--最も単純KVストレージは、このタイプのメモリを使用するように、同様のストレージ構造、等メッセージ認証コード、コンフィギュレーション情報を、memcachedを。
  • IDまたは固有の識別子のための一般的なキー、詳細に対応する値をhash--。このような商品情報、個人情報の詳細、ニュースやその他の詳細など。
  • list--リストため順序付けされ、順序付けられたデータの固定された数に対応するデータを格納するためのより適切。その上地方テーブル、ディクショナリ表と同様。その上***最新の、メッセージキュー、および:リストが順序付けされているので、のような書き込み、時間に応じてソート。
  • set--は、単に、そのようなマイクロブログにおける人の友人として、IDリストモードとして理解することができる牛のように設定されている場合、SETは、2つの交差点、及び組合、差分演算を提供することができます。たとえば、次のようにように二人一緒の友達として下さい。
  • ソートされたSet--は、セットの拡張バージョンで、スコアパラメータが自動的にスコアの値に基づいてソートされます追加します。他のより適切に類似していないが、挿入、トップ10の時間に応じてデータをソートします。

平均キャッシュデータ構造以上に、ないリレーショナルデータベースとしてRedisの少ない複雑なデータ構造が、だけでなく、シーンの多くのために、前述したように。各ビジネスシナリオのためのデータ構造を理解することが、効果的にRedisをのパフォーマンスで利用することができ、開発効率の向上に貢献するだけでなく。

これは、シングルスレッド分散ロックとして使用することができます

そういえば違いRedisのとMemcachedのは、我々はより多くのデータ構造およびこれらの二つの特性の持続性について話している、実際には、比較的大きな差があるがあります:

  • Redisのは、シングルスレッドであり、処理効率の多重化を改善します。
  • memcachedのスレッドスイッチを介して、CPU処理効率マルチスレッドです。

だから、それは最も一般的に使用され、実際には非常に重要なアプリケーションのシナリオシングルスレッドであるRedisのこの機能は分散ロックです。
すべてのマルチサーバー展開で非常に並行システム、対処、データロックについて、それぞれの技術的なフレームワークは、このような.NETのロックのような非常に良いアプローチを、持っている、Javaのスレッドリードに対応できるオブジェクトをロックすることにより、同期化データの汚染問題。しかし、すべての後に、このスレッドは、処理することはより困難である、サーバー、将来的にはデータの汚染問題の分散配置を制御することができます。Redisのシングルスレッドこの機能では、この要件は、次の擬似コードで非常に一貫しています

// 生成ロック
 しばらくロック!= 1 
    // デッドロックを回避するために、有効期限を = INT(time.time())
    LOCK_TIMEOUT =今+ LOCK_TIMEOUT + 1 
    ロック = redis_client.setnx(lock_key、LOCK_TIMEOUT)

 // 実際に対処したいですビジネス
やって()

 // ロックを解除し
、今 = INT(time.time())
 IF今< LOCK_TIMEOUT:
    redis_client.delete(lock_key)

上記のプロセスの唯一の擬似コードの記述であるデッドロックを検討する際に、全体の論理は限りケースとして、非常に単純ですが、実際には、対処することをお勧めします。そのため、パフォーマンス上の利点の分散ロックとしてRedisの、そしてボトルネックになることはありませんが、ボトルネックは通常、真のビジネスプロセスの内容である、または、システムのパフォーマンスを確保するために、ロックの範囲を狭めるようにしてください。

効果的に開発効率を高めることができる自動満了

Redisのデータは、この機能は、我々は注意を払うようにパーティを清掃する古くなったデータを使用せずに、より多くのアプリケーションであり、有効期限を設定することができるので、開発効率はもちろん、パフォーマンスが相対的に高い、比較的高いです。最も一般的なのは次のとおりです。SMS確認コード、時間に敏感な商品陳列を持つというように。でも、比較時間を確認する必要なく、データベースのように。比較的単純なを使用するので、詳細には触れません。

分散永続性とデータと高い同時実行の膨大な量に効果的に対応

公式バージョンはただのRedisの始まりは、スタンドアローンまたは単純なマスター、アプリケーションのほとんどは、独自のクラスタミドルウェアを開発しているが、より広く、よりとして、ユーザーはおよそRedisの3.0ので、より多くの分散型コールをサポートされます公式バージョンは、分散、主に二つの側面のサポートを追加したとき:

  • システムの安定性を確保するために、マスタからのRedisのホットスタンバイサーバー、
  • Redisのフラグメンテーション質量データと高い並行処理への対応

そして、Redisのは、メモリのメモリキャッシュ、データをあるが、さまざまな方法をサポートしているものの、Redisのデータの永続性、ディスクに書き込まれ、すべて、安定Redisのデータは、Redisのクラスタプログラムで、いくつかのシステムが持っている、非常に安全です該当する種類のNoSQLとしてRedisのデータストア。

 

おすすめ

転載: www.cnblogs.com/liuqingzheng/p/11080539.html