「インタビュー心経」--- Redis財団

1つの葉は盲目ですが、オファーは表示されません

序文

Redisは、今日のバックエンドテクノロジーの世界において極めて重要な位置を占めています。ほとんどすべてのバックエンドのテクニカルインタビュアーは、Redisの原則と使用法について、オールラウンドな方法でインタビュイーを相互調査します。Redisからの尋問は遅れる可能性がありますが、欠席することはありません。Old Naは、面接担当者が自信を失った目を暗くするのに耐えられませんでした。1か月の暗くて風の強い夜、私はようやく、Redisのインタビュー資料を収集して整理し、すべての生物を連れて行くことを期待して「Interview Heart Sutra」シリーズを書くことを決心しました。

インタビュー開始

ずさんなハゲの中年男が傷ついたMacを持ってあなたの方へ歩きます。あなたのまばらな髪を見て、私が性交していると思って、これは少なくとも上級建築家です。でも「インタビュー心経」を見てきた私達はまだ落ち着いていて

ここに画像の説明を挿入

こんにちは男の子、あなたの履歴書にRedisがプロジェクトで使われていると書いてあります、なぜRedisを使うのですか?

このとき、あなたは内側にのろいをせざるを得ず、頭がはげており、尋ねられた質問はとても普通でした、これだけですか?しかし、それを示すことはできません。

真剣に返信:こんにちは、ハンサムで魅力的な面接担当者当時、プロジェクトを使用する人が増えたため、従来のリレーショナルデータベース(MySQLなど)を使用するだけでは、プロジェクトのニーズを満たすことができなくなりました。プロジェクトパフォーマンス並行性を考慮する、キャッシュミドルウェアをプロジェクトに導入する必要があります。当時よく使用されているキャッシュミドルウェアRedisとMemcacheの長所と短所を総合的に比較した後、ようやくRedisを選択することにしました。

ここでは、RedisとMemcacheの違い、およびそれぞれの長所と短所について尋ねられる可能性があります。興味のある若いヒーローは情報をチェックして理解することができます、比較を詳しく紹介する記事も公開します

Redisにはどのようなデータ型がありますか?

答えは一挙に:redisは複数のタイプのデータ構造をサポートします。一般的に使用されているのは、文字列、ハッシュ、リスト、セット、ソートされたセットの5つです。

これらの5つのデータ構造は、一度に逆方向と順方向に実行する必要があります。各データ構造の使用シナリオと基本的な実装原理を理解することをお勧めします

ただし、目立たせたい場合は、ビットマップ、ハイパーログ、地理空間インデックス、ストリームのデータ構造も追加する必要があります。

ここでの答えは基本的に面接官の目を開くレベルです

少年、Redis Stringの基本的な実装を知っていますか?

この瞬間、あなたはこう思います:私はここにいるだけで、月々の給与が1KのCV包囲ライオンにインタビューします。なぜこれを行う必要があるのですか?恥ずかしくない!しかし、それを示すことはできません。面接担当者の技を成功させることはできません。

反射はほとんど、Aない:文字列オブジェクト基礎となるデータ構造として実装され、単純な動的列(SDS)直接保存(注:SDSはredisによって定義された構造です)

ここでSDSと言えば基本的には十分ですが、SDS構造の内部構造も詳細に紹介できれば良いと思います

Redisの永続性を理解していますか?簡単に紹介してください

風水清雲氏:Redisの永続化にはRDBAOFの 2種類があります

RDBは完全な永続化を行います(Redisのデフォルトの永続化メソッド)。特定の期間戦略に従って、メモリデータはスナップショットの形でハードディスクのバイナリファイルに保存されます。対応するデータファイルはdump.rdbであり、スナップショットの期間は構成ファイルのsaveパラメータで定義されます。(スナップショットは、それが表すデータのコピー、またはデータのコピーにすることができます。)

増分永続化のためのAOF:Redisは、MySQL binlogと同様に、受信した各書き込みコマンドをWrite関数を介してファイルの最後に追加します。必要に応じて、ファイルに保存された書き込みコマンドを再実行して、メモリ内のredisデータベース全体を再構築できます。

Redis自体のメカニズムは次のとおりです。AOF永続性が有効で、AOFファイルが存在する場合、AOFファイルが最初にロードされます。AOFパーシスタンスが閉じているか、AOFファイルがない場合は、RDBファイルをロードします。AOF / RDBファイルが正常にロードされると、Redisが正常に起動します。AOF / RDBファイルにエラーがある場合、Redisは起動に失敗し、エラーメッセージを出力します

パイプラインを知っていますか?簡単に紹介してください

複数のコマンドをパッケージ化してredisに送信し、処理することができます。処理が完了すると、処理結果が順番にパッケージ化され、一緒に返されます。利点は、I / O時間を削減し、redisスループットを改善できることです。ただし、注意すべき点が2つあります。パイプライン内のコマンドは、互いに因果関係を持つことができません。さらに、パイプラインにコマンドが多すぎないようにしてください。そうしないと、データの量が多すぎて、クライアントの待機時間が長くなり、ネットワークの輻輳を引き起こす可能性があります。多数のコマンドを複数の小さなパイプラインコマンドに分割して完了することができます。

Redis分散ロックを使用しましたか?達成する方法

最初にロックを競合するためにsetnxを使用し、ロックを解放したことを忘れないようにするために、ロックを取得した後、expireを使用してロックに有効期限を追加します。

プロセスが予期せずクラッシュしたり、setnxの実行後、期限切れになる前にメンテナンスを再開した場合はどうなりますか?

驚いたふり:この場合、ロックは解除されません。この時点で、思考状態を作ることができます(思考時間は長すぎないようにしてください。インタビュアーが対処方法がわからないと誤解される可能性があります。対処方法がわからないことをお勧めします)。setコマンドの後に、ロックと有効期限の設定を実現するためのパラメーターを指定できます。 2つの操作により、操作の原子性が保証されます。(コマンド:SETキー値EX 2番目のNX

インタビュアーは微笑んだ、ええと、それは大丈夫だ

redisを非同期キューとして使用しましたか?実装について説明する

一般的に、リスト構造が使用されているキューとして、lpushは、メッセージ、および生産RPOP消費メッセージを。ときRPOPは何のメッセージを持っていない、睡眠しばらくして、もう一度試してください。

インタビュアーはもう一度尋ねます、私たちは睡眠を使うことはできませんか?

はい、brpopなどのリスト構造でブロック命令を使用しますリストに要素がない場合、待機タイムアウトまたはポップアップ要素が見つかるまで、リストはブロックされます。

もう一度質問してください。一度生成して何度も消費したい場合はどうすればよいですか。

あなたは使用することができパブ/サブ Nのメッセージキュー:1を実現するためにパブリッシュ・サブスクライブ・モデルを

もう一度尋ねます。pub/ subモデルの欠点は何ですか?

消費者がオフラインになった場合、生成されたメッセージは失われます。rocketMQ、rabbitMQなどの専門的なメッセージキューを使用して、メッセージが失われないようにすることができます

もう一度質問してください。Redisはどのように遅延キューを実装していますか?

この時点で、イタリアの大砲を引き上げるように第2大隊の司令官に依頼する衝動を持っているかもしれません。面接がスムーズに進むには、内面の衝動を抑え、笑顔を維持する必要があります

ゆっくりと返信:sortsetを使用し、タイムスタンプをスコアとして使用し、メッセージコンテンツをキーとして使用し、プロデューサーがzaddを呼び出してメッセージ作成し、コンシューマーがzrangebyscoreコマンドを使用してN秒前にメッセージを取得し、処理のためにポーリングする

Redisトランザクションについて知っていますか?トランザクション内の特定のコマンドが失敗した場合はどうなりますか?

トランザクション内のコマンドが失敗した場合、トランザクション内の他のコマンドは引き続き実行されます。さらに、Redisトランザクションはロールバックをサポートしていません

Redisに1億個のキーがある場合、そのうちの10wは固定された既知のプレフィックスで始まります。それらをすべて見つける方法は?

keysコマンドを使用して、指定したモードのキーリストをスキャンします。

このredisがオンラインビジネスにサービスを提供している場合、keysコマンドの使用に関する問題は何ですか?

現時点では、redisの主要な機能に答える必要があります。redisはシングルスレッドです。roolback keys命令により、スレッドが一定期間ブロックされ、オンラインサービスが一時停止します。サービスは、命令が実行されるまで復元できません。この時点では、使用することができますスキャン。コマンドをスキャンコマンドはブロックせずに指定されたモードのキーリストを抽出することができますが、キーはある程度繰り返してもよいし、クライアント上で重複排除を行うのに十分です。全体的なスキャン時間は、keysコマンドを使用する場合よりも長くなります

MySQLには2000wのデータがあり、redisに保存できるのは20wのデータのみです。redisのデータがホットデータであることを確認するにはどうすればよいですか?

クライアントが新しいデータをRedisに追加したとき。Redisはメモリ使用量をチェックし、それがmaxmemoryの制限を超えている場合は、設定された消去戦略に従って古いデータをリサイクルします。

Redisクラスターを使用したことがありますか?クラスターの高可用性を確保する方法?クラスターの原理は何ですか?

Redis Sentinalは高可用性に重点を置いています。マスターが停止すると、自動的にスレーブがマスターに昇格し、サービスを提供し続けます。

Redisクラスターはスケーラビリティに重点を置いており、単一のredisメモリーでは不十分な場合、クラスターはシャードストレージに使用されます。

Redisクラスターのデータシャーディングについて話す

Redisクラスターは一貫したハッシュを使用しませんが、ハッシュスロットの概念を導入しています。Redisクラスターには16384のハッシュスロットがあります。CRC16チェックの後、各キーは16384を変調してどのスロットを配置するかを決定します。クラスター内の各ノードはハッシュスロットの一部を担当します。

インタビュー終了

男の子はかなりいいです、あなたはいつ仕事に来る時間がありますか?それとも明日。

あなたは穏やかなふりをします。そんなに急いでいても、私は家を借りたいです。または次の月曜日

インタビュアーは自分に考えたので、NBは彼を逃がすことはできず、すぐに人事にお金を追加するように頼むことができました

最後に書く

多くのことが非常に単純に思えて、あなたもそれができると思うかどうかはわかりませんが、あなたはそれをしたくないだけです。多くの知識は自分自身に知られているようですが、インタビュアーが尋ねると、あなたはできません論理的な答えは明確で完全であり、その後、私は自分ですべてを行うことができると感じましたが、うまく機能しませんでした...

以前も同じでした。しかし、私は私が怠惰ではないことを理解しました。私がゴミであることを認めたくありません。もっと、もっと考えて、もっとまとめて!友達

空腹を保ち、愚か
さは自分のスキルの可視性と幅を広げるために努力します。それはインタビューに合格するための必要条件です。
通常は、より多くのことを考え、要約して、インタビュー中に話せるようにします。
さらに、自信を持って落ち着くと、より信頼できるようになります。面接合格率を向上させる

この記事は、通常のインタビュー経験に基づいており、要約され、完成されています。スペース上の理由により、一部の回答は完全ではない場合があります。インタビュー中の一般的なテストサイトについては、後の記事で詳しく分析します。

最後に、皆さんが早く上陸してほしいと思います。私たちのスローガンは、次のとおりです。

あなたの称賛注意の点は私にとって非常に役に立ちます

おすすめ

転載: blog.csdn.net/weixin_39815001/article/details/108709773