Redisの知識要約(更新)

健二はすぐに仕事を見つけ、自分の小さな共通インタビューの質問...整理
参考文献:「Redisの開発・運用・保守を」

1.Redisプロフィール

NoSQLのRedisのは、シングルスレッドアーキテクチャを使用して、キー(キー値)に基づいてデータベースであり、I / Oは、高性能メモリ・データベース・サービスを実装するためにモデルを多重化します。利点は、サーバのキーと値のペア、豊富な機能を備えた、シンプルかつ安定した、多言語クライアント、持続性、マスター・スレーブレプリケーション、高可用性と分散のためのサポートのデータ構造に基づいて、速度です。Redisのは、キャッシング、ランキングシステム、カウンタアプリケーション、ソーシャルネットワーク、メッセージ・キューイング・システムを行うことができます。

データ構造の2.5種類

  1. 文字列:文字列、整数、またはフロート、最も単純なKV記憶のため、
  2. リスト:リスト、またはポップアップ素子の両端から押圧することができ、同様のファンリストを達成するのに適し、商品レビューデータ等;
  3. ハッシュ:順不同リストは、キーと値のペアが含まれています。
  4. セット:順不同のセットは、交差点、労働組合、違いを実現することができます。
  5. ZSET:順序集合、集合の拡張バージョン、およびパラメータが自動的にスコアの値に基づいてソートされるスコアを追加します。

3.持久化

永続機能が効果的に次の再起動の永続ファイルには、データ復旧を使用する前に撤退問題のプロセスに起因するデータの損失を避けます。Redisのは、永続化メカニズムのRDBとAOF 2種類をサポートしています。
RDBの永続性は、対応dump.rdbために生成されたデータファイルのスナップショットの形でハードディスクに保存し、一定時間記憶データに基づいて、プロセスのハードディスクに保存されている現在のプロセスデータのスナップショットです。RDBは、バックアップおよびレプリケーションシナリオの全体量に適している時点でRedisのデータのスナップショットを代表して、コンパクトに圧縮されたバイナリファイルです。Redisの負荷RDBは、はるかに高速AOFよりデータを回復します。しかし、RBDは、リアルタイムの永続性には適していません。
AOFは、データ復旧の再起動を達成するために、ファイルAOFの目的でコマンドを再実行して明示的に各ログの書き込みを記録し、するための独立した形で持続しました。主な役割は、リアルタイムデータの永続性を解決することです。

4.トランザクション

Redisのは簡単なトランザクション機能、mutil間および2つのexecコマンドを入れて実行するコマンドのセットを提供します。トランザクションのオープンmutil代表は、execコマンドの終わりに代わって取引が、その間、原子オーダーを行っています。
watchコマンドは、トランザクションが実行されません後、キーが変更されたの1一度、1つ以上のキーを監視するための楽観的ロックです。
廃棄コマンドは、トランザクションキューをクリア執行部を放棄します。

5.コピー

複製の総量:通常プライマリコピーのシーンのために使用され、それはデータの量が多い場合には、マスターノードとネットワークが大きなコストを引き起こす、一つの送信ノードからのデータの全てにノードを習得します。
パートレプリケーション:主要レプリケーションシナリオの他の原因から失われた殷ネットワークグリッチを処理するためのデータ、これに関連して、マスターノードからノード、条件が許すならば、マスターノード欠落しているデータのスレーブノードの交換に。データの交換ははるかに少ないコピーの全額よりもあるので、あなたは全額のオーバーヘッドをコピーするには大きすぎる避けることができます。

6.センチネル

プライマリノードに障害が発生した場合は、Redisのセンチネル障害検出し、自動的に転送し、真の高可用性を考慮して、アプリケーション側に通知することができます。
RedisのSentinelはRedisのセンチネルの数を含む分散アーキテクチャは、ノードとデータノード、各ノードは、センチネルセンチネル・データ・ノードおよび監視残りのノードだろうし、それはノードが到達不能であると認めるとき、下線識別にノードを行います。マスターノードが識別された場合、ほとんどのセンチネルノードのプライマリノード到達不可能とみなされたときに、それは彼らが仕事自動フェイルオーバーを完了するために、センチネルノードを選出なり、ノードおよび他の「協議」を、センチネルなり、それが意志リアルタイムRedisのアプリケーション側に変更します。
Redisのセンチネルの特徴:
モニタリング:センチネルリンパ節検出Redisのデータノードを定期的に、センチネルリンパ節の残りの部分がアップするかどうかを、
通知:センチネルリンパ節の結果をアプリケーション側に通知するためにフェイルオーバーします。
マスターノードのフェイルオーバーをメインノードとノードからのプロモーションを達成するために正しい後続の主従関係を維持する;
ことによって提供される構成:Redisのセンチネル構造において、一度にクライアントが開始接続がセンチネルリンパ節、情報を取得するために、そこからマスターノードに設定されています。

7.クラスタ

クラスタRedisのハッシュスロットに配置されたスロットを決定するCRC16チェックサムモジュロによる各キーの16384、16384は、クラスタ内の各ノードは、スロットハッシュの一部を担っています。クラスタモデルからの一次コピーが、各ノードは、n-1のコピーを有しています。
CODISクラスタプログラムは、現在最も使用されています。

8.キャッシングの問題

キャッシュのウォームアップ:直接ユーザが要求したときに、データベースを照会するために回避するために、キャッシュバッファシステム、および、データキャッシュに関連した負荷データに事前にシステムを起動する前に。直接クエリキャッシュデータへのユーザーが以前に予熱し。
キャッシュ雪崩:インスタントは、データを期限切れには、データベース・サーバ上の圧力で、その結果、大きすぎます。
キャッシュの内訳:高熱古くなったデータの単一の瞬間、大量のデータへのアクセスは、ミスのRedisの後、データベースの多数のデータ・サーバ上の圧力で、その結果、同じデータへのアクセスを開始しました。
キャッシュの浸透:キャッシュとデータベースは、すべての要求は、データベースの多数の要求に耐え、短い時間で、その結果、データベースに落ちたと跳ね返っ引き起こし、何のデータではありません。

9.ガベージコレクションの方針

主に次の2つの方法でRedisのメモリ回収機構:
削除キーオブジェクト有効期限のいずれかが、
メモリの使用限度はmaxmemoryのメモリオーバーフロー制御戦略をトリガするために達成されます。

1.削除期限切れのキーオブジェクト
(1)不活性の削除:クライアントキー読み取りタイムアウトプロパティを使用して、ため、有効期限が設定されたキーを操作してリターンを削除します超えている場合。
スケジュールされたタスクを削除する(2):内部のRedisは、通常のタスクを維持するには、デフォルトでは、毎秒10回を実行します。タイミングタスクの削除期限切れのキーロジックが期限切れのキー、キーを使用して高速と低速の回収率モードの割合に応じて、適応アルゴリズムを使用しています。

2.メモリオーバーフロー管理戦略
(1)noeviction:デフォルトのポリシー、任意のデータを削除しません、すべての書き込み操作を拒否し、エラーメッセージ(エラー)OOMコマンドが許可されていないクライアントに返すときに使用されるメモリ、 読み出し動作にのみ、この時間Redisの応答。
(2)揮発性-LRU:LRUアルゴリズムが解放されるまでタイムアウトプロパティ(有効期限切れ)キーを削除する
十分なスペースが行われました。何のキーオブジェクトが削除できない場合は、noeviction戦略をフォールバックします。
(3)allkeys-LRU:LRUアルゴリズムに従って、Deleteキーは、関係なく、データの、これまでに十分なスペースを解放していないタイムアウトプロパティを設定します。
(4)allkeysランダム:ランダムには十分なスペースを解放するまで、すべてのキーを削除します。
揮発性ランダム(5):十分なスペースを解放するまでのランダム削除期限切れのキー。
(6)揮発性-TTL:オブジェクトのキー属性に基づいて、TTL、データを期限切れに最近削除します。ない場合は、
noeviction戦略をフォールバックします。

リリース元の2件の記事 ウォンの賞賛1 ビュー32

おすすめ

転載: blog.csdn.net/weixin_45341772/article/details/105193131