Redisの一般的な面接の質問シェア

1.そこのRedisを使用することの利点は何ですか?

  1. 速度は、HashMapのと同様に、メモリに格納されたデータ、ので、HashMapの利点は、発見の時間複雑であり、操作はO(1)であります

  2. 豊富なデータタイプ、サポートの文字列、リスト、セット、ソートセット、ハッシュのサポート

  3. サポートサービス、オペレーションは、すべての実行またはすべての実行されていないか、データへのいわゆるアトミック変更アトミックです

  4. 豊富な機能:有効期限を設定するためのキーを押して、キャッシング、メッセージのために使用することができ、自動的に失効した後に削除されます

2、Redisのはに比べてメリットは何ですかmemcachedの?

  1. すべての値は、簡単なmemcachedの文字列を、その代替としてRedisのある豊かなデータ型をサポート

  2. Redisのはmemcachedのよりもはるかに速いスピード

  3. Redisのかもしれ永続データ

3、一般的なパフォーマンスの問題と解決策のRedis:

  1. AOFを、このようなRDBメモリのスナップショットとして任意の永続的な仕事を、行うと、ログファイルにない最高のマスター

  2. データはスレーブオープンAOFバックアップデータ、より重要である場合は、ポリシーが1秒ごとに同期するように設定されています

  3. マスター速度と安定性を複製するために、マスターとスレーブの接続は、好ましくは、同じLANであります

  4. メインライブラリ上のライブラリから多くの圧力を増加を避けるようにしてください

  5. 図を使用してマスター構造体からコピーされていない、一方向リンクリスト構造がより安定している、すなわち:マスター< - 。スレーブ1 < - Slave2を< - Slave3は...

この問題を解決し、スレーブのマスターの交換を実現するために失敗したような構造の便利なシングルポイント。マスターがハングアップした場合は、すぐにスレーブ1を回すことができ、マスター、他の未変更を行います。

4、Redisの最も適切なシーン

Redisのも持続的な機能を提供しますが、伝統的な意味での持続性と、ディスク・バックアップ機能の実際にはもっとあるが、Redisのシーンmomory内のすべてのデータのために最も適した、比較的大きな差があり、その後、我々は、おそらく意志質問がある、それはその後、ときにそれを使用する際のMemcached、Redisのを使用するには、より多くのMemcachedのRedisの強化版のように思えますか?

あなたは、単にRedisのとMemcachedの間の違いを比較した場合、ほとんどが次のビューを取得します。

  1. また、ストレージ・リスト、セット、ZSET、ハッシュおよび他のデータ構造を提供しながら、Redisのは、データの簡単なK / V型をサポートしていないだけ。

  2. Redisのバックアップデータ、すなわち、データのバックアップマスタ・スレーブモードをサポートします。

  3. Redisのは、データの永続性をサポートするメモリ内のデータがディスク上に保存することができますが、再度使用するロードすることができたときに、再起動してください。

(1)セッションキャッシュ(セッション・キャッシュ)は、最も一般的なシナリオは、Redisのセッションキャッシュ(セッションキャッシュ)を使用しています。Redisの永続性を提供します(例えばMemcachedのような)以外の記憶とRedisのキャッシングセッションの利点を有します。ユーザーのショッピングカートの情報が失われた場合には厳密に、キャッシュ・コヒーレンシを維持するために必要でない場合は、ほとんどの人が不幸になり、そして今、彼らはそうだろうか?幸いなことに、Redisのこれらの年の改善と、それがどのようにRedisのキャッシングセッションを使用する権利文書を見つけるのは簡単です。でも、よく知られたビジネスプラットフォームMagentoのも、Redisのプラグインを提供しています。

(2)フルページキャッシュ(FPC)の基本的なセッショントークンに加えて、Redisのも、FPCのために非常に便利なプラットフォームを提供します。戻る一貫性、でも、Redisのインスタンスを再起動するので、永続ディスクの、ユーザーがPHPローカルFPCに似た大きな改善を、ある減少ページの読み込み速度を、表示されません。Magentoのは、再び一例として、Magentoのは、フルページキャッシュバックエンドとしてのRedisを使用するためのプラグインを提供しています。また、WordPressのユーザーは、パンテオンは素晴らしいプラグインWP-Redisのを持って、このプラグインは、あなたが訪問したページの読み込みの最速のスピードであなたを助けることができます。

(4)数の増減操作のランキング/カウンタRedisのは、メモリ内の非常に良い達成します。コレクション(セット)と順序集合(ソートセット)も、私たちに、これらの操作は、Redisのは、ただ単にこれら2つのデータ構造を提供し、非常にシンプルになって実行するための時間を確保できます。そこで、我々は最高の10人のユーザにランク取得するには、コレクションをソートする必要がある - 私たちは「user_scores」と呼んで、私たちは次のようなものを実行する必要があります。もちろん、これはあなたのユーザーのスコアに基づいてやっていると仮定します昇順。ユーザーとユーザーのスコアを戻したい場合は、実行する必要があります。ZRANGEのuser_scores 0 10 WITHSCORESアゴラゲームを良い例である、Rubyで実装され、その順位は、データを格納するためのRedisを使用することです、あなたはここにすることができます参照してください。

(5)パブリッシュ/サブスクライブラスト(確かに最低ではない)のRedisの機能をパブリッシュ/サブスクライブです。使用シナリオは非常に確かにあるパブリッシュ/サブスクライブ。私は人々がソーシャルネットワーキング接続を使用し見てきましたが、また、スクリプトトリガをパブリッシュ/サブスクライブ・ベースのチャットシステムを構築し、さらに機能をサブスクライブ/ Redisのを公開します!(いいえ、それは本当だ、あなたは確認するために行くことができます)。

Redisのは、すべての機能が、私はこの多機能ならば、それはユーザーに提供するが、これは、人の少なくともあるように感じています。

5、他の機能のいくつかをRedisの

Redisのはシングルスレッドである(1)、技術をキューイングシングルプロセスRedisのは、従来のデータベースシリアル制御のオーバーヘッドをなくし、同時アクセスシリアルアクセスとなるであろう

(2)別々のリードとライトモデルスレーブDBの数を増やすことによって、読み出し性能が線形成長することができます。一般的に2つのクラスタマスターDBを使用して、マスターDBの単一障害点を回避するために、ホットスタンバイを行うので、読書のクラスタ全体の可用性と書き込みが非常に高いです。欠陥が読み出さ分離し、大量のデータの場合には、スケーラビリティクラスタの記憶容量は、単一のノードに制限されているが、他にもあれば、それがマスターまたはスレーブであるか否かを、各ノードは、データの整合性を維持しなければならないことアーキテクチャを書きますアプリケーションの書き込み集中型アーキテクチャでは、別個の読取りおよび書込みには適していません。

(3)モデルデータ片別読み出しおよび書き込み欠陥モデルを解決するために、モデルが来るデータ片を適用することができます。各ノードは考えることができる独立したマスタであり、サービス・データ・ピースを介して実装します。マスターのそれぞれがモデルに設計することができる二つのモデルの上記組み合わせは、それらマスター及びスレーブの複数から構成されています。

(4)Redisの復旧戦略

  1. 揮発性LRU:データセットのセット有効期限(server.db [I] .expires)中のうち最も最近使用されたデータの選択

  2. 揮発性-TTL:期限切れすべきデータの選択有効期限は、データセット(server.db [I] .expires)から設定されています

  3. 揮発性ランダム:有効期限は、任意のデータのうち、選択されたデータセット(server.db [I] .expires)から設定されています

  4. allkeys-LRU:データセットから出て最低使用頻度のデータの選択(server.db [I] .dict)で

  5. allkeysランダム:データセットからデータを選択する(server.db [I] .dict)任意

  6. 無envictionは(除名):追放データを禁止していません

に結合され、LRU、TTLおよびランダム三つの異なる段階的戦略の背面からデータセット全体からのデータのうち、データ収集またはデータのセットの有効期限で提供するメカニズム、揮発性及びallkeys 6種類のことに注意してください無envictionの種類は、戦略を回復したことはありません。

ポリシールールを使用します。

  1. データは、高周波数へのデータアクセスの一部であるべき乗則分布を、提示された場合は、データアクセスの低周波部分は、allkeys-LRUを使用します

  2. データが均等な分布がレンダリングされる場合、それは、すべてのデータアクセス頻度であるallkeys乱数を使用して、同じです

データはRedisのホットデータであることを保証する方法6は、MySQLが2000ワットデータ、Redisの20ワットに格納されたデータのみ、

知識:Redisのインメモリデータは、特定のサイズにサイズを設定し、彼らはデータ消去戦略を実行します。Redisのは、上記を参照の戦略のうち、6つのデータを提供しています

それらのすべてが見つけることならば7は、キー10ワットを持っ億のRedisのキーは、存在する場合、既知の固定プレフィックスで始まりますか?

キー命令は指定されたパターンのキーのリストを一掃する使用します。

このRedisのは、ビジネスラインにサービスを提供している場合は、命令が問題になるのキーを使用してください。そして、お互いに尋ねますか?

あなたが持っているこの時間は、キー特性のRedisに答えるために:Redisのシングルスレッド。キー命令はいくつかの時間のためにブロックされたスレッドを起こした命令が終了するまで、オンラインサービスは、サービスを復元することができ、失速されます。今回のスキャンコマンドを使用することができ、スキャンコマンドは、パターンを指定したキーのノンブロッキングリストを抽出することができますが、クライアント側の重複排除で、確率のいくつかの重複があるだろうが、一度に行うことができますが、全体的な時間は割合に直接過ごしキーの司令官。

8、Redisの一般的なパフォーマンスの問題は何ですか?どのように解決するには?

  1. マスターは、メモリのスナップショットを書くことが最善ではありませんので、マスター書き込みメモリのスナップショットは、スナップショットがパフォーマンスに比較的大きな影響が非常に大きいときに、仕事のメインスレッドをブロックすることができ、rdbSaveコマンドスケジューリング機能を保存し、それは、断続的に中断されます。

  2. マスターAOFは、永続的な、AOF文書を書き換えていない場合は、パフォーマンス上のこの永続的な方法の影響は軽微でありますが、AOFファイルは、AOFは回復マスターの再起動の速さにあまり影響を提出成長します。1秒に1回のメモリのスナップショットとAOFのログファイルを含む任意の永続的な仕事を、行うにはない最高のマスター、特にメモリのスナップショットを有効にしないデータがより重要である場合には、永続的で、スレーブAOFのバックアップデータを開いて、同期の戦略。

  3. AOF・リライトはCPUとメモリのリソースを大量を占めることになるときに、サービスの負荷が生じ、BGREWRITEAOF AOFファイルを書き換える呼び出すマスターすることは、サービス現象の簡単なサスペンションが高すぎます。

  4. パフォーマンスの問題からRedisのレプリケーションマスター、マスターコピーの速度と安定性から順に、スレーブとマスターは、好ましくは、同じLANに接続されています

9、Redisのは、どのようなデータ構造?

文字列、辞書、ハッシュ、一覧リスト、セット、にSortedSetの順序集合の集まり。

あなたはシニアRedisのユーザーですが、また、いくつかのデータ構造を以下HyperLogLog、ジオ、パブ/サブを追加する必要がある場合。

あなたはまた、Redisのモジュールを果たしたと言うなら、ブルームフィルタ、RedisSearch、Redisの-MLのように、インタビュアーは目が点灯し始めました。

10は、何が起こっているかである、分散型のRedisはそれをロックに使用しましたか?

その後、Setnx、ロックを取得するためのスクランブル、つかんで、有効期限は、ロックが解除忘れを防止期限切れにロックを追加します。

他はあなたを教えてくれます。この時間は、あなたは非常によく答え、その後、実行前の偶発的クラッシュがsetnxプロセスの後に期限切れまたは維持し再起動するかどうか尋ねるようになったし、何が起こりますか?

まあ、ああ、このロックが解除されることはありませんされています。今度は、フィードバック驚きを与える必要があります。そして、あなたが自分自身を取得する必要があり、次の結果は、あなたが出て考えるためのイニシアチブをとることであるかのように、一瞬考えるように装って、彼の頭に傷、そして答えた:私は、パラメータの非常に複雑な命令セット、これを可能にし、同時にsetnxに失効すべきであると覚えています命令の合成に使用します!その後、他の側には、笑顔を明らかにする、と私の心は暗唱し始めた:プレスは、この子は悪いことではありません。

11は、非同期キューを何をするのRedis使用、どのように使うのですか?

構造は、一般的にキューリスト、rpushメッセージ生産、LPOP消費メッセージとして使用されています。適切な睡眠へのメッセージは、もう一度試していないだろうときLPOP。

それを尋ねる人は眠ることができない場合は?blpopと呼ばれる命令のリストには、メッセージが到着するまで、情報がない場合には、それがブロックされます、があります。

消費者を生み出すことができない人は何度もそれを求めた場合は?Nメッセージキュー:パブ/サブトピックサブスクライバモードを使用して、あなたは1を達成することができます。

彼らはパブリッシュ/サブスクライブを依頼した場合の欠点は何ですか?組立ラインオフ消費者の場合には、生産は、メッセージキューがそうでRabbitMQのようプロを使用する必要がありますと、メッセージが失われます。

人はRedisの遅延キューを達成する方法を尋ねる場合は?私は、その詳細な依頼する方法、そして、今、あなたはスティックに入れたいと思い、あなたは野球のバットを持っている場合は面接を殺しました。しかし、あなたは非常に控えめで穏やかな物腰は答えた:使用したSortedSetを、ニュースを生成するためにzadd呼び出すためのキー、前zrangebyscore命令で処理されたポーリングデータN秒に消費者のアクセスとして、スコアとしてメッセージの内容をタイムスタンプを取ります。

ここでは、インタビュアーは密かにあなたの親指アップしています。しかし、彼は現時点ではわからなかったあなたは、椅子の背に中指を立てているということです。

同時に設定するキーのニーズの多数の有効期限が切れている場合12は、一般的には、注意が必要ですか?

その時点で、あまりにも集中設定キー有効期限が多数の有効期限が切れた場合、Redisのは一瞬ケイトン現象があります。一般的に、分散剤のいくつかのことを、時間をかけて有効期限をランダムな値を追加する必要があります。

13. Redisのは、メモリにすべてのデータを置く必要があるのはなぜ?

Redisのは、最速の読み取りを実現し、メモリに、非同期データをディスクに書き込むことにより、高速データを書き込みます。そのため、高速でRedisのデータ永続化機能。あなたは、メモリ内のデータを入れていない場合は、ディスクI / O速度が真剣にRedisの性能に影響を与えます。メモリ今日安くなって、Redisのは、ますます人気になるだろう。あなたが使用する最大メモリを設定した場合、データが記録されている数に達したメモリ制限の後に新しい値を挿入し続けることができません。

14、Redisの永続性機構

持続性の全額をミラーリングするbgsave、AOF増分永続化を行います。bgsaveは長い時間ではなく、AOFを使用する必要があるので、ダウンタイムの多くは、データの損失につながることができ、リアルタイムに、かかりますので。Redisのインスタンスの再起動は、メモリを再構築した後、再起動する前に、完全な回復の状態を引き起こすことが、最近の取扱説明書とAOFリプレイを使用するbgsave永続ファイルを使用する場合。

他には、突然の停電ならば、マシンが起こることを尋ねましたか?ログ同期属性AOF性能が要求されていない場合、設定に応じて、各ディスクの書き込み命令同期の時点では、彼らはデータを失うことはありません。しかし、すべての同期の高いパフォーマンス要件にそれは一般タイミング同期、など1S1回、それがデータ1sのほとんどを失うことになる。この時間を利用して、現実的ではありません。

その他は原則が何であるかを尋ねたbgsave?あなたは、それの上にフォークと牛を二つの言葉を与えられています。フォークが子プロセスを作成することにより、bgsaveするのRedisを意味し、牛はコピーが書き込み、子、親と子の共有データセグメント上で作成されることを意味し、親プロセスが汚れページデータを書き込むために識字サービスを提供し続けます徐々にサブプロセスの分離オフ。

15、Redisのは、永続的な方法のどのような種類を提供しますか?

  1. RDB永続的には、指定した時刻にデータのスナップショットを保存することができ間隔で配置することができます。

  2. サーバの再起動は、元のデータを復元するために、これらのコマンドを再実行する時期AOF永続的にサーバーへの各書き込み操作を記録し、AOFは、ファイルの最後に追加のプロトコルRedisの各書き込み操作を保存するためのコマンド。背景書き換え用AOFファイルにもRedisの、ボリュームはAOFファイルが大きすぎるないように。

  3. あなたは自分のデータはサーバが動作しているときに存在している必要がある場合は、任意の永続的な方法を使用することはできません。

  4. Redisのは、優先順位の負荷AOFファイルを再起動したときにRDBファイルよりも、設定ファイルのデータが保存されているAOF通常の状況下で保存されたとして、あなたはまた、同時に持続性のオープン2種類が、この場合には、元のデータを復元することができますデータセットを完了します。

  5. 最も重要なことは、私たちが起動する永続的な方法をRDBせ、さまざまな方法のRDBとAOF永続性を理解することです。

16、どのように持続性の正しい方法を選択するには?

あなたが同等のPostgreSQLのデータセキュリティを実現したい場合は一般的に、あなたは両方の永続的な機能を使用する必要があります。あなたのデータについて非常に懸念しているが、あなたはまだ数分以内にデータの損失に耐えることができるなら、あなただけのRDBの永続性を使用することができます。

AOF多くのユーザーは、永続使用していますが、この方法をお勧めしません:タイミングRDBスナップショットを生成する(スナップショット)AOFは他にも早い回復であるよりも、データベースのバックアップと回復速度RDBのデータセットは非常に簡単であるため、これに加えて、RDBの使用はまた、前述のバグAOFプログラムを避けます。

17は、パイプラインのメリットは何ですか、なぜパイプラインする必要がありますか?

複数のIO往復時間を設け、一方に低減することができる命令実行パイプラインの間には因果関係。QPSのRedisのピーク値の重要な因子は、バッチ命令パイプラインの数である場合に圧力測定のために使用Redisのベンチマークを求めることができます。

18、Redisの同期メカニズムは、それを理解するには?

Redisのマスタ - スレーブ同期は、同期から、使用されてもよいです。完了RDB後のメモリバッファに続く修正の記録動作をRDB画像がメモリにロードされたノードのコピーが完了した後、ファイルのコピーノードの総量に受け入れ同期させながら最初の同期は、マスタノードは、一度bgsaveありません。ローディングが完了し、その後ノードレコード同期再生同期処理に変更されたコピーの動作時にマスタノードに通知した後に完了する。

19、Redisのクラスタソリューションと実装

高可用性のRedisのセンチネルフォーカス、自動的にマスターに昇格マスタースレーブでのダウンタイムは、サービスを提供し続けています。

クラスタRedisのは、単一のRedisのメモリ不足、クラスタを使用して、メモリの断片化しながら、拡張性に焦点を当てます。

20、キーのRedisのインスタンスの最大数を格納することができますか?リスト、それらまで保存することができますどのように多くの要素セット、ソートセット?

理論的にはRedisの鍵は232まで対応、およびキーの少なくとも2.5億のインスタンスごとに保存され、実際にテストすることができます。私たちは、大きな値のいくつかをテストしています。

任意のリスト、セット、およびソートセットは、232個の要素を入れることができます。

換言すれば、システムメモリ内のRedisの利用可能なメモリの限界値。

21、Redisの永続的なデータ・キャッシングとどのように展開しますか?

  • Redisのキャッシュ使用量として使用される場合、一貫したハッシング動的膨張容積の減少を使用。

  • 永続ストレージが使用されているようRedisのは、あなたが固定キー・ツー・ノードマッピング関係を使用する必要がある場合は、それが決定されると、ノードの数は変更されません。そうでない場合(つまり、Redisのノードが動的に変化あり)実行時にシステムのデータの再分散に使用する必要があり、現在のRedisのクラスタにのみ行うことができます。

おすすめ

転載: www.linuxidc.com/Linux/2019-09/160513.htm