2020年のRedisの最新バージョンのよくあるインタビューの質問の概要

多くの友人は面接前に面接の質問を読むだけですが、これは正常です。面接質問の収集と練習には時間がかかるため、多くの面接担当者から人気のある面接質問を収集しました。今後の仕事や面接にお役立てください。

面接の質問が多すぎてスペースが限られているため、ここにはよくあるRedisの面接の質問の一部のみが表示されています。完全版とより関連性の高い面接資料が必要な友達は、下のリンクをクリックして無料で入手できます!
リンク:ここをクリック!パスワード:CSDN

ここに画像の説明を挿入

1. Redisとは何ですか?

Redisは完全にオープンソースで無料であり、BSDプロトコルに準拠しており、高性能のKey-Valueデータベースです。

Redisおよびその他のキー値キャッシュ製品には、次の3つの特性があります。

Redisはデータの永続性をサポートします。メモリ内のデータはディスクに保存でき、再ロードして再起動時に使用できます。

Redisは単純なKey-Valueタイプのデータをサポートするだけでなく、リスト、セット、zset、ハッシュ、その他のデータ構造のストレージも提供します。

Redisは、データのバックアップ、つまりマスター/スレーブモードでのデータのバックアップをサポートしています。

Redisの利点

非常に高いパフォーマンス-Redisは、110,000回/秒の読み取り、81,000回/秒の書き込みが可能です。

豊富なデータ型-Redisは、バイナリケースの文字列、リスト、ハッシュ、セット、および順序付きセットのデータ型操作をサポートしています。

Atomic-All Redis操作はアトミックです。つまり、これらの操作は正常に実行されるか、まったく実行されません。単一の操作はアトミックです。複数の操作は、トランザクション、つまりMULTIおよびEXEC命令によってパッケージ化された原子性もサポートします。

豊富な機能-Redisは、パブリッシュ/サブスクライブ、通知、キーの有効期限などの機能もサポートしています。

Redisは他のKey-Valueストアとどう違うのですか?

Redisはより複雑なデータ構造を持ち、それらに対してアトミック操作を提供します。これは、他のデータベースとは異なる進化のパスです。Redisデータ型は基本的なデータ構造に基づいており、追加の抽象化なしでプログラマーに透過的です。

Redisはメモリ内で実行されますが、ディスクに永続化できるため、データの量がハードウェアメモリよりも大きくなることはないため、異なるデータセットを高速で読み書きする場合は、メモリを比較検討する必要があります。インメモリデータベースのもう1つの利点は、ディスク上の同じ複雑なデータ構造と比較して、メモリ内での操作が非常に簡単であるため、Redisが内部で複雑な多くのことを実行できることです。同時に、ディスクフォーマットに関しては、ランダムアクセスを必要としないため、コンパクトな方法で生成されます。

次に、Redisのデータ型は?

回答:Redisは5つのデータ型をサポートしています:文字列(文字列)、ハッシュ(ハッシュ)、リスト(リスト)、セット(コレクション)およびzsetsortedセット:順序付きセット)。

実際のプロジェクトで最も一般的に使用されるのは文字列とハッシュです。Redisの上級ユーザーは、次のデータ構造HyperLogLog、Geo、Pub / Subを追加する必要があります。

BloomFilter、RedisSearch、Redis-MLなどのRedisモジュールをプレイしたと言うと、インタビュアーの目が輝き始めます。

3. Redisを使用する利点は何ですか?

1.高速。データはHashMapと同様にメモリに格納されるため、HashMapの利点は、検索と操作の時間の複雑さがO1であることです)

2.豊富なデータ型をサポートし、文字列、リスト、セット、Zset、ハッシュなどをサポートします。

3.サポートトランザクション、操作はすべてアトミックです。いわゆるアトミック性とは、すべてのデータ変更が実行されるか、まったく実行されないことを意味します

4.豊富な機能:キャッシュ、メッセージ、キーに応じた有効期限の設定に使用でき、有効期限後に自動的に削除されます

4. Memcachedに対するRedisの利点は何ですか?

1. Memcachedのすべての値は単純な文字列であり、その代わりにredisが使用され、より豊富なデータ型をサポートします

2. RedisはMemcachedより高速です3. Redisはデータを保持できます

5. MemcacheとRedisの違いは何ですか?

1.保存方法Memecacheはすべてのデータをメモリに保存し、停電後にハングアップするため、メモリサイズを超えることはできません。Redisの一部はハードディスクに保存され、データの耐久性を確保できます

2.データサポートタイプMemcacheは、比較的単純なデータタイプをサポートしています。Redisには複雑なデータ型があります。

3.基礎となるモデルの使用方法は、基礎となる実装方法とクライアントとの通信用のアプリケーションプロトコルで異なります。Redisは直接VMメカニズム自体を構築しました。一般的なシステムはシステム関数を呼び出すため、移動して要求するために一定の時間を浪費します。
ここに画像の説明を挿入

6. Redisはシングルプロセスでシングルスレッドですか?

回答:Redisはシングルプロセスでシングルスレッドです。Redisはキューテクノロジーを使用して同時アクセスをシリアルアクセスに変換し、従来のデータベースシリアル制御のオーバーヘッドを排除します。

7.文字列型の値の最大ストレージ容量はどれくらいですか?

回答:512M

8. Redisの永続化メカニズムとは何ですか?彼らの長所と短所は?

Redisは、RDBとAOFの2つの永続化メカニズムを提供します。

1. RDBRedis DataBase)永続モード:データセットのスナップショットを使用する半永続モードを指します)、Redisデータベースのすべてのキーと値のペアを記録し、特定の時点でデータを一時ファイルに書き込みます。永続性の終了後、この一時ファイルは、最後の永続ファイルを置き換えて、データの回復を実現します。

利点:

1.永続化に便利なdump.rdbファイルは1つだけです。

2.耐災害性が高く、ファイルを安全なディスクに保存できます。

3.パフォーマンスを最大化するには、子プロセスをフォークして書き込み操作を完了し、メインプロセスがコマンドの処理を続行できるようにして、IOを最大化します。永続化には別のサブプロセスを使用します。メインプロセスはIO操作を実行せず、redisの高いパフォーマンスを保証します。4。大きなデータセットと比較して、起動効率はAOFよりも高くなります。

短所:

1.データのセキュリティが低い。RDBは間隔を置いて永続化されます。永続化の間にredisが失敗すると、データが失われます。したがって、この方法はデータ要件が厳密でない場合に適しています)

2. AOFAppend-only file)永続モード:すべてのコマンドラインレコードが完全に永続的にredisコマンドリクエストプロトコルの形式で保存され、aofファイルとして保存されます。

利点:

1.データセキュリティ、aof永続性は、appendfsync属性で構成できます。常に、すべてのコマンド操作がaofファイルに一度記録されます。

2.追加モードでファイルを書き込みます。サーバーが途中でダウンしている場合でも、redis-check-aofツールを使用してデータの整合性の問題を解決できます。

3. AOFメカニズムの書き換えモード。AOFファイルが書き換えられる前に(ファイルが大きすぎる場合、コマンドはマージされて書き換えられます)、一部のコマンド(誤って操作されたフラッシュオールなど)を削除できます

短所:

1. AOFファイルがRDBファイルより大きく、リカバリ速度が遅い。

2.データセットが大きい場合、起動効率はrdbよりも低くなります。

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

1.マスターのメモリスナップショットを書き込まないことをお勧めします。マスターがメモリスナップショットを書き込む場合、saveコマンドはrdbSave関数をスケジュールします。これにより、メインスレッドの作業がブロックされます。スナップショットが大きい場合、パフォーマンスへの影響が非常に大きくなり、サービスが断続的に中断されます

2.データがより重要な場合、特定のスレーブがAOFによるデータのバックアップを有効にし、ポリシーは1秒に1回同期するように設定されます。

3.マスター/スレーブレプリケーションの速度と接続の安定性のために、マスターとスレーブは同じLANにあることが望ましい

4.ストレスのかかったマスターライブラリにスレーブを追加しないようにしてください

5.マスター/スレーブレプリケーションにグラフ構造を使用しないでください:シングルリンクリスト構造を使用すると、より安定します。つまり、マスター<-Slave1

<-Slave2 <-Slave3 ...この構造は、単一障害点の問題を解決し、スレーブからマスターへの置き換えを実現するのに便利です。マスターが電話を切った場合は、Slave1をマスターとしてすぐに起動でき、その他は変更されません。
ここに画像の説明を挿入

10. redisの期限切れのキーを削除する方法は?

1.タイミングの削除:キーの有効期限を設定するときに、タイマータイマーを作成します。キーの有効期限が切れるとすぐにタイマーがキーの削除操作を実行できるようにします。

2.遅延削除:キーの有効期限に関係なく、キースペースからキーを取得するたびに、取得したキーが期限切れかどうかを確認します。期限切れの場合はキーを削除し、期限切れでない場合はキーを返します。

3.定期的な削除:プログラムは定期的にデータベースをチェックし、期限切れのキーを削除します。削除する期限切れのキーの数とチェックするデータベースの数については、アルゴリズム次第です。

11. Redisリサイクル戦略(排除戦略)

Volatile-lru:有効期限が設定されているデータセット(server.db [i] .expires)から、最も長く使用されていないデータを選択します

volatile-ttl:有効期限を設定したデータセット(server.db [i] .expires)から、有効期限が切れるデータを選択します

揮発性ランダム:有効期限を設定したデータセット(server.db [i] .expires)から削除するデータを任意に選択します

allkeys-lru:データセット(server.db [i] .dict)から最も使用頻度の低いデータを選択して削除します

allkeys-random:削除するデータセット(server.db [i] .dict)から任意にデータを選択します

no-enviction(排除):データの排除を禁止します

ここで6つのメカニズムに注意してください。Volatileおよびallkeyは、有効期限が設定されたデータセットからデータを削除するか、すべてのデータセットからデータを削除するかを指定します。次のlru、ttl、およびrandomは、3つの異なる削除戦略に加えて1つです。決してリサイクルしないという無作戦戦略。

ポリシールールを使用:

1.データがべき乗分布を示している場合、つまり、データの一部に頻繁にアクセスし、データの一部にそれほど頻繁にアクセスしない場合は、allkeys-lruを使用します。

2.データが均等に分散されている場合、つまりすべてのデータアクセス頻度が同じ場合は、allkeys-randomを使用します

12. edisはなぜすべてのデータをメモリに格納する必要があるのですか?

回答:読み取りと書き込みの速度を最速にするために、Redisはデータをメモリに読み取り、非同期でディスクに書き込みます。したがって、redisには高速でデータの永続化という特性があります。データをメモリに格納しないと、ディスクI / O速度がRedisのパフォーマンスに深刻な影響を及ぼします。今日、メモリが安くなると、redisはますます人気が高まります。最大メモリ使用量が設定されている場合、既存のデータレコードの数がメモリ制限に達した後は、新しい値を挿入できません。

13. Redisの同期メカニズムを理解していますか?

回答:Redisはマスター/スレーブ同期とスレーブ/スレーブ同期を使用できます。最初の同期中に、マスターノードはbgsaveを実行し、後続の変更操作を同時にメモリバッファーに記録します。完了後、RDBファイルはレプリケーションノードに完全に同期されます。レプリケーションノードが完了を受け入れると、RDBイメージがメモリにロードされます。ロードが完了すると、期間中に変更された操作レコードをレプリケーションノードに同期して再生するようマスターノードに通知され、同期プロセスが完了します。

14.パイプラインの利点は何ですか?なぜパイプラインを使用するのですか?

回答:パイプラインによって実行される命令間に因果関係がない場合、複数のIOラウンドトリップの時間を1つに減らすことができます。ストレステストにredis-benchmarkを使用する場合、redisのピークQPSに影響を与える重要な要素は、パイプラインバッチ命令の数であることがわかります。

15. Redisクラスターを使用したことがありますか?クラスターの原理は何ですか?

Redis Sentinal 着眼于高可用, 在 master 宕机时会自动将 slave 提升为master, 继续提供服务。
Redis Cluster 着眼于扩展性, 在单个 redis 内存不足时, 使用 Cluster 进行分片存储。

16. Redisクラスターソリューションによってクラスター全体が使用できなくなるのはどのような場合ですか?

回答:3つのノードA、B、Cを持つクラスター。レプリケーションモデルがない場合、ノードBに障害が発生すると、クラスター全体が5501-11000の範囲のスロットがなく、使用できないと見なします。

17. RedisがサポートするJavaクライアントは何ですか?どちらが公式の推奨ですか?

回答:Redisson、Jedis、レタスなど。Redissonが正式に推奨されています。

18.ジェディスとリディソンの長所と短所は何ですか?

回答:JedisはRedisのJava実装のクライアントです。そのAPIはRedisコマンドのより包括的なサポートを提供します。Redissonは分散した拡張可能なJavaデータ構造を実装します。Jedisと比較すると、Jedisは関数が単純で文字列をサポートしていません。操作は、並べ替え、トランザクション、パイプ、パーティションなどのRedis機能をサポートしていません。Redissonの目的は、ユーザーからRedisへの懸念の分離を促進し、ユーザーがビジネスロジックの処理により集中できるようにすることです。
ここに画像の説明を挿入

19. Redisでパスワードを設定してパスワードを確認するにはどうすればよいですか?

パスワードの設定:config set requirepass 123456承認パスワード:auth 123456

20、Redisハッシュスロットの概念について話しますか?

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

21. Redisクラスターのマスター/スレーブレプリケーションモデルとは何ですか?

回答:一部のノードに障害が発生したり、ほとんどのノードが通信できない場合でもクラスターを使用できるようにするために、クラスターはマスター/スレーブレプリケーションモデルを使用し、各ノードにはN-1個のレプリカがあります。

22. Redisクラスターで書き込み操作が失われますか?どうして?

回答:Redisは強力なデータ整合性を保証しません。つまり、実際には、特定の条件下でクラスターが書き込み操作を失う可能性があります。

23. Redisクラスターはどのように複製されますか?

回答:非同期レプリケーション

24. Redisクラスターのノードの最大数はいくつですか?

回答:16,384。

25. Redisクラスターのデータベースを選択するにはどうすればよいですか?

回答:Redisクラスターは現在データベースを選択できません。デフォルトは0データベースです。

26. Redisの接続をテストする方法は?

回答:pingコマンドを使用してください。

27. Redisトランザクションを理解するには?

回答:
1.トランザクションは独立した独立した操作です。トランザクション内のすべてのコマンドはシリアル化され、順番に実行されます。トランザクションの実行中に、他のクライアントから送信されたコマンド要求によって中断されることはありません。
2.トランザクションはアトミック操作です。トランザクション内のコマンドはすべて実行されるか、どれも実行されません。

28. Redisトランザクションに関連するコマンドは何ですか?

回答:MULTI、EXEC、DISCARD、WATCH

やっと

誰もがより良いインタビューと研究を行えるように、建築家向けの完全なビデオチュートリアルとJavaの体系的な資料をここに示します。Javaコアナレッジポイント、インタビュートピック、20年の最新インターネットなど、Javase-ssm-springcloud実際の質問や電子書籍などがあり、Javaを学びたい、またはキャリアを変えたいと思っている友人や大学生に非常に役立ちます。彼らは誰とでも自由に共有できます。必要な友人は下のリンクをクリックして無料で入手できます!
リンク:ここをクリック!パスワード:CSDN

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/XingXing_Java/article/details/108456574