驚くばかり!アリババの見つけにくいRedisソースコード分析コレクションはオープンソースであり、無料で制限されています!

序文

オープンソースの世界では、高性能サービスの代表的なものはNginxとRedisです。これら2つのソフトウェアのソースコードを見ると、非常に簡潔で効率的であり、非同期ネットワークI / Oメカニズムにも基づいているため、高性能サービスを学びたいプログラマーや愛好家は、これら2つのネットワークサービスを調べてください。ソースコードは非常に必要です。

Nginxは現在多くの本を市場に出していますが、Redisは確かに非常に少ないです。Redisバージョンは、安定した2.xバージョンから多くの優れた機能を追加した5.0バージョンまで、近年非常に急速に開発されています。現在、これらの機能を体系的に説明するためのデータはありません。ただし、隣の編集者が持ってきた「Redis 5 Design and Source Code Analysis」という本は、Redis 5.0テクノロジー学習の大きなギャップを埋め、技術者がRedisカーネルの実装メカニズムを深く理解するための効果的な方法です。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

編集者は、「Redis 5 Design and Source Code Analysis」というドキュメントを、序文、目次、メインコンテンツの3つのパートで説明します。同時に、この記事があなたの学習に役立つことを願っています。

最初にこのRedisカタログを見てみましょう

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

メインコンテンツ

この本の内容は3部に分かれており、合計22章です。

最初の記事:第1章では、Redisの概要と、Redisのコンパイル、インストール、および調査の方法を紹介します。第2章から第8章では、SDS、ジャンプテーブル、エンドプレスリスト、辞書、整数セット、クイックリスト、およびストリームデータ構造に焦点を当てます。成し遂げる。

2番目:第9章Redisは、注文の実装プロセスのライフサイクルを説明しています。読むことが重要です。第10章から第19章では、それぞれ、キー、文字列、ハッシュテーブル、リスト、セット、注文セット、GEO、 HyperLogデータフロー関連コマンドの実装。

第3章:第20〜22章では、永続性、マスタースレーブレプリケーション、およびクラスタリングの実装について、詳細な拡張なしで簡単に説明しています。読者をガイドしたいと思います。

第1章、第1章〜第8章

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第1章この章では、最初にRedisの開発プロセスとRedis5.0の新機能を紹介します。次に、Redisソースコードの読み方に焦点を当て、Redisソースコードのインストール方法とデバッグ方法を簡単に紹介して、すべての人が後続の章を学ぶための基礎を築きました。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第2章この章では、SDSのデータ構造と基本的なAPIの実現について紹介します。ソースコード分析プロセスでは、SDSの機能がどのように実現されているかを知ることができます。

l)SDSはC言語の文字列とどのように互換性がありますか?バイナリセキュリティを確保するにはどうすればよいですか?

SDSオブジェクトのbufは柔軟な配列であり、上位層から呼び出されると、SDSは直接bufを返します。bufはコンテンツへの直接のポインタであるため、C言語関数と互換性があります。コンテンツが実際に読み取られるとき、SDSは「i0」ではなくlenを介して読み取り長を制限し、バイナリセキュリティを確保します。

2)sdshdr5の何が特別なのですか?

sdshdr5は、32バイト未満の文字列の保存のみを担当します。一般に、小さな文字列の格納がより一般的であるため、Redisはsdshdr5のデータ構造をさらに圧縮し、sdshdr5のタイプと長さを同じ属性に入れ、フラグの下位3ビットを使用してタイプを格納し、上位5ビットを使用して長さを格納します。 。空の文字列を作成すると、sdshdr5はsdshdr8に置き換えられます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

スペースに限りがあるため、編集者は記事の内容を1つずつ詳しく紹介するのではなく、メインの内容を切り取ります。この「Redis 5 Design and Source Code Analysis」ドキュメントが必要な友達は、記事の最後で取り上げます。

第3章、この章では、ジャンプテーブルの基本原則と実装プロセスを紹介します。ジャンプテーブルの原理は単純であり、そのクエリ、挿入、および削除の平均的な複雑さはO(logN)です。ジャンプリストは、主に順序付きコレクションの基本的な実装で使用されます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第4章、この章では、最初に圧縮リストのストレージ構造を紹介し、次にソースレベルから圧縮リストの基本操作(圧縮リストの作成、要素の挿入、要素の削除、圧縮リストのトラバース)を詳細に分析し、最後に圧縮リストのチェーン更新の理由を分析します。そして解決策。この章を学習することで、誰もが圧縮リストをより深く理解できるようになります。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第5章、この章では、Redisデータベースの重要なデータ構造の1つである辞書を紹介します。ディクショナリとは何ですか?Redisはどのようにディクショナリを実装しますか?ディクショナリの基本的な操作とアプリケーションは何ですか?ステップバイステップで説明する3つの質問があります。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第6章、この章では、最初にintsetのストレージ構造を紹介し、コレクションタイプがGDBを介してintsetとして保存されるときの実際のストレージ方法を確認し、次にintset内の要素を追加、削除、および検索する方法を紹介します。最後に、いくつかの一般的なAPIとintsctの操作の複雑さを紹介します。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第7章、この章では、主にRedisで一般的に使用される基本的なデータ構造のクイックリストを紹介し、主にクイックリストの一般的な状況と基礎となる圧縮のストレージを紹介します。また、クイックリストの基本操作を詳しく紹介し、さまざまな状況でのデータストレージの変化について説明しました。最後に、クイックリストの一般的なAPIインターフェイスとその複雑さを示します。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第8章、この章では、主にStreamの基本的な実装を紹介します。まず、Stream構造が依存する必要のある2つのデータ構造ListpackとRaxについて説明し、これら2つの構造の基本的な操作を詳細に紹介します。その後、Streamがこれら2つの構造をどのように使用するかについてさらに説明しました。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

パート2、第9章〜第19章

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第9章では、最初に、オブジェクト構造robj、クライアント構造クライアント、サーバー構造redisServer、コマンド構造redisCommandなどのいくつかの基本構造を紹介します。最後に、この章では、サーバーの起動監視、コマンド要求の受信と中断、コマンド要求の実行とコマンド応答の返送など、サーバーがクライアントコマンド要求を処理するプロセス全体を紹介し、すべての人が後続の章を学習するための基礎を築きます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第10章、この章で紹介するコマンドは、特定のタイプを判別する必要がなく、任意のタイプのキーに作用できます。注:moveコマンドはクラスターモードでは機能しません。sortコマンド(サブコマンドbyigct)の一部の機能は制限されています。dclおよびlunlinkの使用は区別する必要があります。delと同様に、使用時にサーバーをブロックする可能性のあるコマンドには、hgetall、lrange、smembers、flushall、flushdb、keysなどがあり、最初の3つのコマンドがdelコマンドと比較されます。見落とされがちです。flushallとflushdbには、非同期で操作できるパラメーターがあります。詳細については、対応する章を参照してください。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第11章、この章では、Redis文字列コマンドを紹介します。sctコマンドとgetコマンドは、Redisで最も一般的に使用されるコマンドです。stringコマンドの最下層はsdsによって実現され、データの設定と取得はrobj構造によって実現されます。文字列のキー値とタイムアウト期間は、redisDbディクショナリに保存されます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第12章、この章では、主にRedisが提供するハッシュ関連コマンドの基本的な実装を紹介します。最初に、Redisがハッシュ構造(ziplistまたはハッシュテーブル)を格納する方法を紹介します.field-valucの長さが短く、fiecld-valuesの数が少ない場合、Redisはストレージにziplistを使用します。それ以外の場合は、ハッシュテーブルを使用します。その後、これら2つの構造を統合した後、Redisの使いやすさと外界に提供される統一されたインターフェースを要約しました。最後に、Redisが上記の統合インターフェイスを使用してハッシュ関連のコマンドを実装する方法について詳しく説明します。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第13章、この章では、Redisでのlistコマンドの実装について説明します。listaccountレイヤーのデータ構造はクイックリストを使用します。この章の最初

スタックとキューの基本概念、およびプッシュ/ポップを介してスタックとキューを実装する方法を紹介しました。次に、リストブロッキングを導入しました。

blpopコマンドによるコマンドの実現は、クライアントのブロックプロセスを説明し、クライアントプロセスのブロックを解除しました。このプロセスも

これはより複雑で、読者は注意深く学習する必要があります。最後に、いくつかの一般的なリスト操作とクエリコマンドを紹介します。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第14章、この章では、Redisのコレクションのさまざまなコマンドを紹介します。コマンドには、単一のセットに対する操作と複数のセット間の操作が含まれます。ソースコードから、コレクションの最下層がdictとintsetの2つの基本的なデータ構造に基づいていることがわかります。ほとんどの操作は別々に説明されています。挿入と削除の効率は、dictとintsetにも依存します。コマンドのコレクションのソースコードを学習するときは、第5章と第6章のデータ構造学習を組み合わせることをお勧めします。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第15章では、この章では主に順序付きセットに関連するコマンドについて説明します。要素のサイズに応じて、順序付きセットの基本的な実装は2つのタイプに分けられます。1つはziplist、もう1つはdictとskiplistです。これらの3つのデータ構造に基づいて、順序付きセットの基本操作、バッチ操作、およびセット操作が分析されます。読者が注文されたセットに関連するコマンドと原則を理解し、習得するのに役立つことを願っています。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第16章では、このセクションでは最初にジオハッシュアルゴリズムの開発履歴を紹介し、次にRedisでのGEO関連コマンドの実装について詳しく説明します。Redis GEO関連のコマンドの実装を紹介する過程で、読者に刺激を与えることを期待して、すばらしいビット操作アルゴリズムについても説明しました。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第17章の最初のセクションでは、最初のLCアルゴリズムからLLCアルゴリズム、次にHLLアルゴリズムへのベースカウントアルゴリズムの進化について説明します。LCアルゴリズムは、ベースが小さい場合により正確になり、LLCはベースが大きい場合に利点があり、ACはLCとLLCの単純な組み合わせであり、HLLはLLCに基づく多くの最適化の改善です。2番目のセクションではRedisのHLLアルゴリズムの実装について説明し、3番目のセクションではHypcrLogLogコマンドの実装について説明します。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第18章、この章では、ストリーム関連コマンドのソースコードの実装について説明します。スペースの制限により、一部のコマンドの実装では一般的な概要のみを示します。コマンドの詳細を知りたい場合は、Redis5.0のソースコードを自動的に表示できます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第19章、この章では、Redisでのトランザクション、発行-サブスクライブ、およびLuaスクリプトの実装を紹介します。モノとLuaスクリプトの両方でアトミック性を実現できますが、Luaスクリプトの方が強力です。公開およびサブスクライブ機能は、Redis 5.0で新しく導入されたStreamを使用して実装することもできます。詳細については、この本のStrcamの章の概要を参照してください。

この章を通じて、Redisでのトランザクション、公開とサブスクライブ、およびLuaスクリプトについてより深く理解できるため、それらをより適切に実践に適用できます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

パート3、第20章〜第22章

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第20章、この章では、永続性を実現するためのRedisの2つの方法、RDBとAOFを紹介します。まず、RDBの実装方法とRDBファイルの具体的なフォーマットを紹介し、例を通してRDBファイルを分析します。次に、AOFの実現方法とAOF書き換えの実現について紹介します。AOFとRDBの長所と短所を比較することにより、最終的にRedisハイブリッド永続性の実装を導入しました。

この章の調査を通じて、Redisの永続性の原則を理解し、実際の状況に応じてデータのセキュリティとパフォーマンスをトレードオフし、Redisの永続性パラメータを合理的に構成することができます。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第21章、この章では、最初にマスタースレーブレプリケーションの機能の実現を紹介します。この機能から、マスタースレーブレプリケーション用に最適化されたRedisの設計アイデアを学ぶことができます。マスタースレーブレプリケーションソースコードの実装を紹介するときは、最初にその主要なデータ変数の定義を紹介し、最後にマスタースレーブレプリケーションの主要な7つのプロセスの実現を詳細に紹介します。この記事を研究することで、読者はマスタースレーブの複製についてより深く理解する必要があると思います。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

 

第22章、この章では、最初にクラスターが解決する必要のあるいくつかの問題を紹介し、次にRedisクラスターがこれらの問題を解決する方法を具体的に紹介します。これは、Redisクラスターでマスタースレーブスイッチングを実装する方法、レプリカドリフトの背景と原則、およびシャード移行の特定のアイデアに焦点を当てています。最後に、Redisクラスター間の通信用の9つのデータパケット形式について詳しく説明します。

すごい! 人気のあるRedisソースコード分析コレクションのAliの内部445ページがついにオープンソースになりました

この「Redis5デザインとソースコード分析」ドキュメントが必要な友達は、以下のアシスタントVXで無料で受け取ることができます。

 

おすすめ

転載: blog.csdn.net/GYHYCX/article/details/109223815