シナリオ: Redis インタビュー (インターネットからの写真)
考察:インタビュー中のRedisに関するXiao Wangのパフォーマンスと回答は明らかに失敗だった。 Redis は私たちが仕事で毎日使用しているものなのに、なぜ面接で減点対象になってしまうのでしょうか? 開発者として、私たちはビジネス開発に集中できるように、偉大な神々によってパッケージ化されたものを使用することに慣れていますが、これらの一般的なツールの基本的な実装が何であるかを知りません。そのため、日常生活ではそれらをうまく使用できても、面接になると面接官に好印象を与えることができません。 この記事では、Redis の原理や応用など、いくつかの知識ポイントをまとめており、皆様のお役に立てれば幸いです。 Redisとは
ここでは、Redis チュートリアルの Redis の説明を引用しました。これは非常に公式ですが、非常に標準的なものです。 メモリベースと永続性の両方を備えたログベースのキー値データベース。 この説明は非常に適切かつ包括的だと思います。 1. Redisの業界における地位 Redis は、インターネット技術分野で最も広く使用されているストレージミドルウェアです。超高性能、多面的なアプリケーション機能、豊富で完全なクライアントサポートで広く評価されており、特にそのパフォーマンスと読み取り速度により、この分野で最も人気のあるミドルウェアとなっています。基本的に、JD.com、Alibaba、Tencent、GitHub などの多くの大手インターネット企業を含むすべてのソフトウェア企業が Redis を使用しています。そのため、Redis はバックエンド開発者にとって欠かせないスキルにもなっています。 2. ナレッジグラフ 私の意見では、各テクノロジーを学ぶには明確なコンテキストと構造が必要です。そうでないと、何を学んだのか、どれだけ学んでいないのかがわかりません。本と同じように、目次がなければ魂を失ってしまいます。 そこで、Redis のナレッジグラフ、通称マインドマップを下図のようにまとめてみました。ナレッジポイントは完全ではない可能性があり、今後も継続的に更新・補足していきます。 このシリーズの記事の知識ポイントは、基本的にこのマインドマップと一致します。この記事ではまずRedisの基礎知識を紹介し、以降の記事ではRedisのデータ構造、アプリケーション、永続性などについて詳しく紹介します。 Redisの利点 1. 速い キャッシュツールとして、Redis の最もよく知られている特徴はその速度です。どのくらい速いのでしょうか? Redis の単一マシン qps (1 秒あたりの同時実行数) は 110,000 回/秒に達し、書き込み速度は 81,000 回/秒です。では、Redis はなぜこんなに速いのでしょうか?
2. 豊富なデータ型 Redis には、文字列、リスト、ハッシュ、セット、zset という 5 つのよく使用されるデータ型があります。各データ型には独自の用途があります。 3. アトミック性、トランザクションのサポート Redis はトランザクションをサポートしており、すべての操作はアトミックです。Redis は、複数の操作を組み合わせたアトミック実行もサポートしています。 4. 豊富な機能 Redis には、分散ロックとして使用したり、データを永続化したり、メッセージ キュー、ランキング リスト、カウンターとして使用したり、パブリッシュ/サブスクライブ、通知、キーの有効期限などをサポートしたりするなど、豊富な機能があります。ミドルウェアを使用して実際の問題を解決したい場合、Redis は常にその役割を果たすことができます。 Redis と Memcache の比較 Memcache と Redis はどちらも優れた高性能のインメモリ データベースです。通常、Redis について話すときは、Memcache と Redis を比較します。 (なぜ比較する必要があるのでしょうか? もちろん、Redis の素晴らしさを強調するためです。比較しなければ害はありませんよ~) 比較のポイントは次のとおりです。 (1)保管方法
(2)データサポートタイプ
(3)使用された基礎モデル
(4)ストレージ値のサイズ
これを読んで、Redis はとても優れていて、利点がたくさんあると思いますか? 実際、Redis にはまだ多くの欠点があります。日常生活でこれらの欠点を克服するにはどうすればよいでしょうか? Redisの問題と解決策 1. キャッシュデータベースの二重書き込み一貫性の問題 問題: 分散システムでは一貫性の問題が非常によく発生します。一般的に、一貫性には、強い一貫性と結果的一貫性の 2 種類があります。強い一貫性を満たす必要がある場合、Redis は完璧ではありません。データベースとキャッシュが二重に書き込まれるため、不整合が確実に発生し、Redis は結果的一貫性しか保証できません。 解決策: 最終的な一貫性をどのように確保するか?
2. キャッシュアバランシェ問題 質問: 私たちは皆、映画で雪崩を見たことがあります。雪崩は最初は穏やかに始まりますが、突然崩壊し、大きな破壊力を引き起こします。ここでも同じです。コードを実行すると、多くのキャッシュの有効期間が同じになるように設定します。すると、これらのキャッシュは同時に有効になり、データベースに再アクセスしてデータを更新します。これにより、接続が多すぎて負荷がかかりすぎるため、データベースがクラッシュすることになります。 解決する:
3. キャッシュ侵入問題 問題: キャッシュ侵入とは、一部の異常なユーザー (ハッカー) がキャッシュに存在しないデータを故意に要求し、すべての要求がデータベースに集中して、データベース接続に異常が発生することを指します。 解決する:
4. キャッシュの同時実行競合問題 質問: キャッシュ同時実行競合の問題は、主に複数のスレッドがキーを設定する場合に発生し、データの不整合を引き起こす可能性があります。 たとえば、Redis に amount キーを持つ値を保存し、その値が 100 であるとします。2 つのスレッドが両方とも値に 100 を追加してから更新する場合、正しい結果は 300 になります。ただし、2 つのスレッドがこの値を取得すると、両方とも 100 になり、結果は 200 になり、同時キャッシュ競合の問題が発生します。 解決する
Redis 有効期限戦略 Redis のデータ量が増えると、メモリ使用率は増加し続けます。設定された削除時間に達すると一部のキーが削除されると思っていましたが、時間になるとメモリ使用率がまだ非常に高いです。これはなぜでしょうか? Redis は、定期削除と遅延削除のメモリ削除メカニズムを使用します。 1. 定期的な削除 定期削除とスケジュール削除には違いがあります。
2. 怠惰な削除 簡単な例を挙げましょう。私が中学生の時、宿題が多すぎて、全然終わらせることができませんでした。先生は、次の授業でこのテスト用紙について話すと言って、「みんな終わらせましたか?」と尋ねました。実際、終わらせていない人がたくさんいるので、次の授業までに埋め合わせる必要があります。 同じ原則が遅延削除にも適用されます。値は消えているはずですが、まだそこにあります。このキーを取得したいときに、期限切れになっているはずであることがわかったので、すぐに削除し、「そのような値はありません。期限切れです!」を返します。 定期的削除 + 遅延削除の有効期限戦略ができたので、安心してリラックスできるでしょうか? 実際にはそうではありません。キーがアクセスされなければ、キーはそこに残りますが、これは不合理です。これにはメモリ削除メカニズムが必要です。 次の図に示すように、Redis には一般に 6 種類のメモリ削除メカニズムがあります。 では、Redis のメモリ削除メカニズムをどのように設定すればよいのでしょうか? Redis.confで設定できる
まとめ この記事では、Redis を概観し、Redis のナレッジ グラフを大まかに整理します。比較すると、Redis には学習する必要があるナレッジ ポイントが非常に多いことがわかります。次に、Redis の長所と短所を分析し、効率的なメモリベースの読み取りと書き込みの速度と豊富なデータ タイプについて学習します。また、Redis がデータの一貫性、キャッシュの侵入、キャッシュの雪崩などの問題を処理する方法も分析します。Redis の有効期限戦略とキャッシュの削除メカニズムを理解します。 皆さんは Redis についてある程度理解していると思います。次の記事では、Redis のデータ構造、各データ型の実装方法、対応するコマンドについて分析します。 [この記事は51CTOコラムYixin Technology Institute、WeChatパブリックアカウント「Yixin Technology Institute(id:CE_TECH)」からのオリジナル記事です] この著者の他の記事を読むにはここをクリックしてください |
<<: 人工知能を正しく実装するにはどうすればいいでしょうか?
量子コンピュータは多くの産業の運営方法を変えるでしょう。量子コンピューティングは社会に大きな影響を与...
[[393929]]この記事はWeChatの公開アカウント「プログラマー李小冰」から転載したもので...
本日、VRの第一人者でありOculusのCTOであるジョン・カーマック氏はFacebookにメッセー...
2022年7月12日、九張雲済DataCanvas社は、もう一つの画期的なオープンソース技術成果であ...
1. 自動運転システムレベルテストの基本理論1.1 自動運転テストシナリオの構成1.1.1 フレーム...
2023年も終わりに近づいています。過去1年を振り返ると、ChatGPTの登場が世界的なAIブーム...
コンピュータや機械は睡眠なしでも動作できますが、科学者たちは最近、人間と同様に一部の AI も「睡眠...
この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...
大規模言語モデル (LLM) は、多数のパラメーターとデータを備えたディープ ニューラル ネットワー...
顔認識は、一般的に肖像認識または顔認識とも呼ばれ、顔の特徴に基づいて人物を識別する生体認証技術です。...
最近また「AI変顔」が流行っていますね。 Leiphone.com(公式アカウント:Leiphone...