Redisのキャッシュメッセージサブスクリプション浸透総務雪崩

Redisの

5つのデータタイプとメッセージのサブスクリプションをRedisの 

文字列のコマンド

文字列は、データの最も一般的に使用されるタイプであり、共通鍵/値の記憶は、として分類することができます

1:設定/取得 

に対応するString型のキー値の値を設定します。 

キーに対応する値を取得 

2:MGET
キーの複数のバルク値は、ノーリターンのゼロが存在しない可能性がある場合 

3:INCR && incrby 

キー操作に対応したINCR値はジャークを行い、新たな値を返し、指定された値を加算incrby 

4:INCR && incrby 

キー操作に対応したINCR値はジャークを行い、新たな値を返し、指定された値を加算incrby

5:setnx 

キーが既に戻る存在する場合は、値のキーに対応する設定値の文字列型0

 6:SETEX 

文字列値キーに対応する設定値のタイプ、および期間を設定 

その他のコマンド 

getrange部分文字列の値に対応するキーを取得し
、上書き、しませんMSETバッチ、複数のキー値を設定し、すべての値が設定されていることを成功すれば、手段が、それ以外の場合は値が、MSETと、設定がセットmsetnx存在しませんされて0手段を返します。いくつかの重要な
GETSETは、キー値を提供し、古いキー値はappendを返します。指定されたキーの文字列、および戻り新しい文字列の長さに価値を付加します 

 

hashコマンド

ハッシュテーブルは、String型と値のフィールド(ダブルハッシュ)との間のマッピングであります

 ハッシュマップの内部記憶構造体の実際の値に対応するデータ型Redisのハッシュキー(ハッシュテーブル名) 

ハッシュは、オブジェクトを格納するのに特に適しています 

オブジェクトの各属性に対しては文字列型として格納されると、ハッシュ・タイプに格納されたオブジェクト全体は、より少ないメモリを消費します。

 格納されたデータのメンバーが格納されているメンバーの数を増加させると、自動的に実際のハッシュマップに変換される以下zipmap、エンコーディングHTのためのこの時間であります

 シナリオの使用:ユーザ情報、製品情報、注文情報などを格納するオブジェクトを使用している場合。 

HSET:HashMapの中でフィールドの値に対応する設定キー 

hget:HashMapの中でフィールドの値に対応するキーを取得します 

hgetall:HashMapの中のキー値に対応するフィールドのすべてを取得します

HLEN:フィールドのHashMapに対応する数字キーを返します。 

 

 

 

コマンドの一覧 

lpush:ヘッドに対応するリストの重要な要素を追加します。 

LRANGE:指定されたインデックスの範囲に対応する重要な要素のリストを取得するには、すべての要素を取得-1

 LPOP:リストの対応する端からキー要素を削除し、その要素を返します。 

rpush:リストの対応する最後の重要な要素を追加します。 

RPOP:リストの対応する端からキー要素を削除し、その要素を返します。 

設定コマンド 

 サッド:の対応するセットの重要な要素を追加します。

 smembers:すべての要素の集合に対応するキーを取得します

 ランダム要素がセットに対応するDeleteキーとリターン:SPOP 

 suion:指定されたキーとセットに対応する要求セット 

 焼結:交差点に対応する指定されたキーセットを求めて 

 

SortSetコマンド

基礎は、スコアの昇順に設定し、スコアに応じてソート 

zadd:対応ZSETの重要な要素を追加します。 

zrange:取得は、指定した範囲の要素を対応するキーは、すべての要素を取得しZSET -1 

zrem:対応ZSETの重要な要素を削除します 

zrangebyscore:リターンキーの順序集合、スコアの範囲を指定する要素のリスト、ランキングの使用 

zrank:指定ZSETメンバーのランキングに対応するキーを返します。メンバ値(大、小)インクリメントされるスコア;底0にランク、スコアランキング値の最小のメンバーである0、ランキングの使用であります 

ハッシュマップの保存による設定、要素のセットに対応するキー、値は空のオブジェクトsortsetでそれを格納し、ソートリアライズの方法で、ハッシュマップの保存、だけでなく、レイヤジャンプテーブルのジャンプテーブルを追加します。二重リンクリストの同等は、旅行に基づいてそれを追加します現在の要素のhoplinksより大きい 

Redisのは、オープンソース(BSDライセンス)、データベース、キャッシュおよびメッセージングミドルウェアとして使用することができるメモリ・システムに格納されたデータ構造です。このような文字列などのデータ構造、(文字列)、(ハッシュの)ハッシュ、リスト(リスト)、セット(セット)、順序集合(ソートされたセット)などの複数の種類をサポートしています。 

 

Redisのニュースリリース購読 

役割:主要なニュースの出版社やニュース購読者のActiveMQ、デカップルシステム間のメッセージ、同様のMQ、RabbitMQの、rocketmq、カフカに使用される同様の情報パイプラインを、公開する購読します。たとえば使用:受注に成功支払い、プラスの会員システム統合を、お金の財布を控除操作し、送達システム(発行財) 

PUBLISH:メッセージを指定されたチャンネルのチャンネルに情報を送信します。クライアントの数がメッセージを受信返します 

SUBSCRIBE:情報指定されたチャネルに登録 

UNSUBSCRIBE:退会指定されたチャンネルは、指定されていない場合は、すべてのチャネルからの退会します。 

?ニュースリリースおよびMQコントラストRedisの答え登録:Redisのは、関数が比較的弱いが比較的軽量であるサブスクライブパブリッシュは、MQメッセージの永続性は、データの信頼性が悪い、ノーバックオフィス機能することができますMSGID、msgKeyクエリメッセージ 

Redisの取引メカニズム 

MULTIとEXECコマンド 

MULTIは、トランザクションのすべてのコマンドと一緒に、トランザクションを開始し、その後、取引のチームに複数のコマンドは、トランザクションは、最後のEXECコマンドによってトリガーされます 

DISCARDコマンド
DISCARDコマンドはトランザクションをキャンセルするために使用され、それがクライアントのトランザクション全体キュー明確である、トランザクション状態非トランザクション状態から、クライアント調整バック、およびクライアントに文字列OKを返し、トランザクションがキャンセルされたことを示します 

WATCHコマンド 

WATCHコマンドのトランザクションは、キーの任意の数の監視を開始する前に:トランザクションを実行するEXECコマンドを呼び出すときに、いずれかの場合 

他のクライアントキーが変更された監視対象、トランザクション全体はもはや実行、ダイレクトリターン故障ではありません 

 

従来のリレーショナル・トランザクションにRedisの業務を比較 

アトミック(不可分) 

Redisのは、単一のコマンドを実行する原子が、Redisのトランザクションにアトミック性を維持するための任意の機構を追加することなく、これRedisのトランザクションの実装はアトミックではありません。すべてのコマンドキューのトランザクションが正常に実行されている場合は、このトランザクションの成功は、実行言いました 

一貫性(一貫性) 

       間違ったチーム 

クライアントがサーバではなく、そのようなコマンドのようなパラメータの数に間違ったコマンドを送信し、そうであれば、チームへのコマンドの実行中に、クライアントへのサーバーはエラー・メッセージを返し、クライアントのトランザクション状態はREDIS_DIRTY_EXECに設定されています。 

       実行エラー 

コマンドエラーが間違って操作するための鍵の異なるタイプを実行するために、例えば、トランザクションの実行中に発生した場合、エラーは、Redisのは、トランザクションの結果に含まれますが、このトランザクションは、中断または全体の故障原因ではないではないでしょうトランザクションの結果は、コマンドを実行してきた、それが実行されるコマンド以下の取引には影響しません影響しますので、そのトランザクションの一貫性は影響を受けません 

絶縁(アイソレーション) 

WATCHコマンドのトランザクションは、キーの任意の数の監視を開始する前に:もしあれば、トランザクションを実行するEXECコマンドを呼び出すとき 

イタリアは、キーが変更され、別のクライアントは、トランザクション全体がもはや実行され、ダイレクトリターン障害によって監視されていています

 永続性(耐久性) 

トランザクションはなく、ラップRedisのコマンドキューのセットで演奏されているので、Redisの取引の決定で使用される任意の追加の永続性機能なので、永続的な永続的なモードを提供していませんでした 

 

持久化

      その後、RDBの永続指定した時間内にデータセットの間隔メモリのスナップショットがディスクに書き込まれ、実際の動作は、子プロセスのフォークであることを意味し、一時ファイルに書き込まれたデータの最初のセット、成功した書き込み、および前にファイルを置き換えます、バイナリ圧縮ストレージ。

      AOFは、サーバーごとの書き込みによって処理されたログレコードの形に固執し、削除、クエリ操作が記録されていない、記録されたテキストが、あなたは、詳細な操作履歴を参照し、ファイルを開くことができます。

長所と短所の両方

利点RDBのが存在とは何ですか?

1)このようたら、その後、あなたの全体のRedisのデータベースは、ファイルのバックアップに最適です。一つだけのファイルを、含まれています。たとえば、毎時間にデータの最後の24時間をアーカイブするつもりかもしれませんが、また、毎日のデータの最後の30日に1回アーカイブ。システムが壊滅的障害が発生した後、このバックアップ戦略では、我々は非常に簡単に復元することができます。

2)災害復旧のために、RDBは非常に良い選択です。我々は非常に簡単に別のファイル圧縮すること、その後、他の記憶媒体に転送することができますので。

3)性能が最大化されています。プロセスのRedisのサービスのために、持続性の初めに、それはあなたが大幅にサービスのIO動作の処理を避けることができるように、子供のうちフォークで、その後、子供がこれらの永続的な作業の完了後に行う唯一の必要があります。

データセットが大きい場合4)AOF機構と比較すると、RDB効率が高くなり始めます。

RDBとどのような弱点が存在しますか?

あなたは、データの回避損失に最大であるデータの高可用性を保証したい場合は1)、その後、RDBは良い選択ではないでしょう。そのため持続性のタイミングの前に、システムのダウンタイム現象一度、ディスク上の書き込みデータまでの時間が失われます持っていませんでした。

2)フォークを介してRDBので、子プロセスは、データ・セットが大きい場合、それはサーバ全体は数百ミリ秒、あるいは1秒提供を停止することがありそうである場合には、作業永続データを支援します。

AOFの利点、何をしますか?

1)。このメカニズムは、より高いデータセキュリティ、すなわち、データの永続性をもたらすことができます。Redisのは、すべての第2シンク、すべての修正および同期が同期していないことを、同期戦略3を提供します。実際には、非同期同期が毎秒完了している場合、その効率が非常に高く、その差は、システムのダウンタイム現象一度、その後、数秒以内に変更されたデータが失われることです。そして、すべての同期を変更し、我々は、データの変更が即座にディスクに記録されますたびに発生同期の永続性とみなすことができます。このように効率が最低であることを予想されます。非同期に関しては、言うまでもなく、私たちはそれを理解する修正することができると思います。

2)。機構は、ログファイルの内容を乱すことなく、書き込みプロセス中のダウンタイムの現象は、既に存在する場合でも、使用されるログファイルの追加モードに書き込むため。私たちは、この操作を記述する場合は、半分しかデータ現れシステムのクラッシュは、私たちがでツールのRedis-チェックAOFデータの整合性の問題を解決するために、心配次回の起動時のRedisの前に、私たちがすることができないことです。

ログが大きすぎる場合3)、Redisのは自動的にリライトのメカニズムを有効にすることができます。追加モードへのRedisはRedisのは、コマンドに変更されたものを記録するための新しいファイルを作成しながら、変更されたデータは、古いディスク・ファイルに書き込まれ続けるということは、この期間中に実行されます。そのため、スイッチングが行われ、書き換えデータのセキュリティをより良く保証することができます。

4)。AOF形式は、すべての変更を記録するための明確な、理解ログ・ファイルを含みます。実際には、我々は、ファイルを介して再構成データを完了することができます。

AOFの欠点、何をしますか?

1)データセットの同じ数の場合、AOFはRDB文書ファイルよりも一般に大きいです。RDBスピード速いAOFの回復の速度よりも大規模なデータセットを回復します。

2)同期化政策によって、作業効率上AOFが遅くRDBにおけるよりなる傾向にあります。要するに、第二の戦略当たりの同期の効率は、効率的な比較的高い、無効同期効率とRDBポリシーです。

両方の選択基準は、システムを参照してくださいするときに、私はより高い性能と引き換えにバックアップを有効にしない、頻繁に操作を書くことが喜んでいた高いキャッシュ・コヒーレンシ(AOF)と引き換えに、いくつかのパフォーマンスを犠牲にして喜んで、時間が節約手動で実行します、バックアップ(RDB)を行います。これは、さらにいくつかの最終的一貫性の平均値をRDBです。

 

redisTemplateのAPI 

opsForValue操作文字列、キー、値、opsForSetキー期限切れ操作するセットを含む、setBitビット操作
opsForHash操作ハッシュ
opsForZset操作SortSet 

opsForList操作キューリスト
opsForHash操作ハッシュopsForZset操作リストキュー操作SortSet opsForList 

キャッシュ雪崩 

     キャッシュアバランシェ?あなたはキャッシング雪崩を防ぐために、すべてのソリューションを持っていますか何ですか?

                キャッシュは時間をかけて集中している場合は、期限が切れていたキャッシュの浸透の多くが発生し、すべてのクエリは、キャッシュ雪崩で、その結果、データベース上に落ちます。オリジナルのキャッシュ無効化するので、新しいキャッシュがまだCPUとメモリ上のデータベース巨大な圧力は、深刻なデータベースのダウンタイムを引き起こす可能性がありながら、データベースを照会するために行くべき時にキャッシュへのアクセスのためのすべての要求を達しました 

     あなたはキャッシング雪崩を防ぐために、すべてのソリューションを持っていますか?

  1:ロックキュー  

        キー:whiltList値:千ワットA指定setNx whiltList値NULLVALUEミューテックスミューテックスを解決するために、UID、SETNXのRedisのは、ミューテックスキーを設定した場合の動作に戻り、バックキャッシュに成功し、運転負荷DBと、そうでない場合、リトライキャッシュ全体の方法を取得します 

  2:データ予熱 

       キャッシュラインを予熱するシステムになった後、関連データを直接キャッシュバッファシステムにロードされます。これは、ユーザの要求、最初のクエリのデータベース、その後、データ・キャッシュの問題が!直接クエリキャッシュデータが以前に予熱されて!キャッシュリロードメカニズムにユーザーがキャッシュを更新するために進めることができたときに回避することができ、その後、切迫した大規模な同時アクセスプリインストールされ、手動でトリガ異なるキャッシュキー

  3:二重のキャッシュポリシー 

       C1のキャッシュ無効化時間は、短期的に設定されているオリジナルのキャッシュC1、C2は、C1が失敗したとき、あなたはC2を訪問することができ、キャッシュのコピーである、C2は、長期的に設定されています

  4:定期的に更新キャッシュポリシー 

         キャッシュの無効化は少なく、初期化コンテナの積載を開始し、タイマータスクのキャッシュを使用して更新または削除要求の厳しいです

         できるだけ均一な時間にキャッシュ無効化の点で異なる有効期限の時刻を設定します

 

キャッシュの浸透

       キャッシュ貫通とは何ですか?あなたは、キャッシングの侵入を防ぐために、すべてのソリューションを持っていますか?

                 キャッシュの浸透がないデータベースで、ユーザーのクエリデータを参照し、自然にキャッシュ内には存在しません。対応するキーが値のキャッシュ内に見つからなかったユーザーのクエリでこの結果は、再クエリに毎回データベースを再度、その後、空(2件の引き合いに行わ役に立たないのと等価)を返します。このような要求はキャッシュダイレクトアクセスデータベースをバイパスします 

        あなたは、キャッシングの浸透を防ぐために、すべてのソリューションを持っていますか? 

   1:ブルームフィルタブルームフィルタ 

        このデータの特定の不存在下で十分な大きさのビットマップへのすべての可能なデータのハッシュになります 

これ基盤となるストレージ・システム上のクエリの圧力を回避ビットマップ傍受オフ、

   2:キャッシュはnull 

         クエリが返す場合はデータが空(データのないか、またはシステム障害が存在する)である、我々はまだ空のキャッシュ結果を参照してくださいが、その有効期限は非常に短く、もはや5分以内とします。キャッシュへのこの直接入金セットのデフォルト値を通じ、その取得する2番目の時間がある値がバッファ内にあるが、データベースへのアクセスを継続しません 

 

 

キャッシュの便益と費用 

キャッシュのペイオフ:

1:加速度の読み取りと書き込みキャッシュ読み取りと書き込み速度:CPU L1 / L2 / L3キャッシュは、Linuxのページキャッシュ加速ドライブリーダ、ブラウザキャッシュ、キャッシュデータベースはEhcacheの結果

2:サービスの最終用途Redisのキャッシュのコストを低減することがMySQLの後端の負荷をもたらすなど:負荷を軽減するバックエンドサーバーが負荷フロントバッファを介して後端部を削減します。

1:一貫性のないデータキャッシングとデータ層は時間の矛盾の窓があり、アップデートポリシー関連

2:元のコードのメンテナンスコストを達成することができる唯一のMySQL関数を記述する必要がありますが、コードの複雑さを増す、キャッシュされたデータを維持しようとしてキャッシュを追加した後。キャッシュメモリのヒープオーバーフローの潜在的なリスクは、ehcacheを、loadingCacheとしてユーザプロセスに影響を与えます 

 

ヒープキャッシュおよびリモートサーバーのキャッシュRedisの選択内:

     一般的な、より良い性能、リモート・キャッシュ・ニーズソケットトランスポート内のヒープバッファ

     可能な限り、リモート・ユーザ・レベルのキャッシュキャッシュ

     可能な限り、リモート大型データキャッシュ、サービングノードの原則

 

 

データベースとしてメモリキャッシュとして使用する2つの方法をRedisの 

どのような長所と短所のデータベースとして使用Redisの

長所:スキーム制約なし、比較的容易なデータ構造を変更するには、データ型は当初、圧縮機能、高性能10万/ QPSを決定します 

短所:いいえ、インデックス、外部キー、不足int型/日付の基本データ型は、多くの条件が低い間接的な効率インラインセット(焼結、zinterstore)との接続、貧しい保守性を開発する必要があります 

データベースで使用される二つのプログラムで、キャッシュとして使用Redisの 

クエリのデータをデータベースクエリに第二層を与えるために直接返された場合、バッファ内の最初の層を照会し、そしてキャッシュ次回をフラッシュするjedis統合方式設定キー、値[「11」、「22」] [ " 33、「44」] MyBatisの/休止二次キャッシュ方式、キャッシュとして:SQLSESSION、キャッシュ処理、有効な単一のリンク 

 

トランザクション分離メカニズム
構文:設定されたグローバルトランザクション分離レベルは、コミットされていない読んで  。

种类:コミットされていない読んで、コミット読み、反復可能読み取り、直列化可能 

 

公開された50元の記事 ウォンの賞賛2 ビュー2323

おすすめ

転載: blog.csdn.net/eafun_888/article/details/96565804
おすすめ