Java 面接の質問 --- Redis①

  1. リディスとは何ですか?

非リレーショナル インメモリ データベースは、データがメモリに保存されるため、非常に高速です。
2. Redis はどのようなデータ型をサポートしていますか?

string: キーと値のペアのストレージ、Java の HashMap に似ており、キーは値に対応し、最大値は 512M です; list :
両端からのデータ操作をサポートする二重リンク リスト;
set: 順序付けされていない非- Java HashSet に似た反復コレクションで、2 つのセットの交差、差分、和集合を簡単に見つけることができます。zset
: セットと比較して、優先順位を示す追加のスコアがあり、リーダーボードとして使用できます。
ハッシュ: マッピング テーブル、キーはグループに対応します オブジェクトの保存に適したキーと値のペア;
​​ 3. Redis のアプリケーション シナリオは何ですか?

キャッシュの実行、ホット データの保存、
分散ロックの実行、
メッセージ キューの実行、
4. Redis のスレッド モデルについて話す

Redis は、ファイル イベント プロセッサと呼ばれる Reactor モードに基づいたネットワーク イベント プロセッサを開発しました。Reactor
モードは、ノンブロッキング スレッドを使用してすべてのリクエストを受信し、特定のロジックを実行するために異なるハンドラーを割り当てます。Redis
ファイル イベント プロセッサデバイスは複数のソケット、IO マルチプレクサ、ファイル イベント ディスパッチャ、およびイベント ハンドラで構成されます。Redis
のファイル イベント ハンドラは、最初に IO マルチプレクサを使用して複数のソケットをリッスンし、ソケットに従って、ワードによって実行されるタスクを使用して、ソケット; 監視対象のソケットが受け入れ、読み取り、書き込みなどの操作を実行する必要がある場合、ファイル イベント ディスパッチャーは、以前に関連付けられていたイベント ハンドラーを呼び出して、関連する操作を実行します。
5. Redis はマルチスレッドですか、それともシングルスレッドですか?

Redis 全体はシングルスレッドではありませんが、コマンドを実行するモジュールがシングルスレッドであるため、Redis はシングルスレッドであると言います。さらに、Redis 6.0 からは、ネットワーク イベントの読み取りと書き込みにもマルチスレッドが導入されています。 、ただし、コマンドを実行するモジュールはまだシングルスレッドです。
6. Redis パイプライン テクノロジーについてご存知ですか?

パイプライン テクノロジはクライアント側のテクノロジです。クライアントを介して redis コマンドを実行する場合、通常のプロセスは、クライアントがサーバにリクエストし、実行後にサーバがクライアントに応答することです。応答を受信した後、クライアントはリクエストを継続します。サーバーに次の実行コマンドを送信します。つまり、コマンドが実行されるたびに、「要求と応答」を往復する必要があります。実行するコマンドが増えると、ネットワーク内でのやり取りの消費量が増加します。パイプライン テクノロジの原理は、単純に最初にすべてのコマンドを送信し、その後サーバーが統合された応答を実行するのを待つことです。ネットワークの消費量。
7. Redis トランザクションとは何ですか?

Redis トランザクションは、リレーショナル データベース トランザクションとは異なります。これは、一連のコマンドが順番に実行されることを保証できる一連のコマンドです。他のクライアントによって送信されたコマンドを、トランザクション管理のコマンド セットに挿入することはできません。アトミック性は保証されません。単一のコマンドの実行はアトミックですが、コマンドのグループの実行のアトミック性は保証できません。つまり、トランザクション管理のコマンドの実行が失敗しても、他のコマンドは実行されます。ロールバックはサポートされていません。トランザクション関連のコマンドには次が含まれます: watch、1 つ以上のキーを監視し、キーが別のクライアントによって変更された場合、トランザクションは中断されます。multi、トランザクションを開始します。exec、トランザクションを実行します。discard、トランザクションを破棄します。unwatch、キャンセルキーモニター。
8. Redis データの信頼性をどのように確保しますか?
Redis を維持します。永続化方式には、RDB と AOF の 2 つがあります。

RDB は、メモリ内のデータを定期的にスナップショットの形式でディスク上の dump.rdb ファイルに保存します。これはデフォルトで有効になっています。RDB をトリガーするには、手動トリガーと自動トリガーの 2 つの方法があります。手動トリガーは、SAVE または BGSAVE コマンドを手動で実行することです。SA​​VE はサーバー プロセスをブロックし、BGSAVE はバックグラウンドで実行を完了します。自動トリガー戦略は、Redis 構成ファイルで構成できます。たとえば、save 1000 1、つまり 1000 秒以内に少なくとも 1 つのデータが変更されると、BGSAVE がトリガーされ、データがディスクに書き込まれます。この戦略は複数設定できます。RDB の欠点は明らかで、一定期間データが失われる可能性があることですが、利点はデータの回復が速いことです。
AOF は、書き込み操作を記録し、それを appendonly.aof ファイルに追加するコマンドです。Redis はまた、appendonly.aof ファイルを書き換えて、繰り返されるコマンドを削除し、サイズを削減します。書き換えは手動および自動でトリガーすることもできます。手動トリガーでは、BGREWRITEAOF コマンドを実行して AOF ファイルを書き換えます。自動トリガーでは、構成ファイルでポリシーを構成できます。たとえば、auto-aof-rewrite-percentage 100 は、ファイルの増分が 100 であることを意味します。 Rewrite, auto-aof-rewrite-min-size 64mb は、AOF ファイル サイズが 64m を超える場合に再書き込みを意味します。構成ファイルで AOF 書き込みコマンド戦略を構成できます。appendfsync Everysec は 1 秒ごとに 1 回記録することを意味し、これがデフォルトの戦略です。すべての書き込み操作を記録するように appendfsync Always を構成することもできます。appendfsync いいえ、オペレーティング システムによって異なります。いつ記録書き込み操作を行うかを決定します。AOF の利点はデータ損失が発生しないことですが、欠点は IO 操作が多いことです。
通常、RDB と AOF は同時に有効になりますが、同時に有効にした場合、最初に AOF ファイルに基づいてデータがリストアされます。

  1. Redis 内のデータがすべてホット データであることを確認するにはどうすればよいですか?
    Redis に設定されたデータが一定レベルに達すると、メモリ削除戦略に従ってデータが削除されます。メモリ削除戦略は次のとおりです。

noeviction: メモリが不十分な場合、書き込み操作は例外を報告します。
allkeys lru: 削除するすべてのキーの中から最も最近使用されていないキーを選択します。
allkeys random: 削除するすべてのキーのうち 1 つをランダムに選択します。
volatile lru: 最も最近使用されていないキーを選択します。期限切れのキーの中からキーを削除;
volatile Random: 削除する期限切れのキーの 1 つをランダムに選択;
volatile ttf: 古い期限切れのキーを最初に削除します。
10. Redis は期限切れのキーをどのように処理しますか?
Redis には、期限切れのキーの削除戦略が 3 つあります。

時限有効期限: 有効期限に達すると削除しますが、メモリには優しいですが、CPU にはあまり優しくありません; 遅延有効
期限: キーが使用されると、期限切れかどうかを判断し、有効期限が切れたら削除しますが、CPU には優しくありません。メモリに優しい ;
定期的な有効期限: キーの有効期限が切れているかどうかを定期的に確認し、期限が切れたら削除します;
Redis は遅延有効期限と定期的な有効期限の両方の戦略を使用します。

Guess you like

Origin blog.csdn.net/m0_54861649/article/details/126545379