ngx_hash.{c|h} は、モジュール構成分析でよく使用される、nginx のより重要なハッシュ構造を実装します。ハッシュ構造は読み取り専用であり、最初の作成時に指定できるのは、そこに格納されているキーと値のペアだけであり、その後は「追加、削除、変更、確認」操作のみが実行できます。
まず、ハッシュ構造のメモリレイアウトを見てみましょう:

[cpp] ビュー
普通のコピープリント?
- typedef struct {
-
ngx_hash_t *hash; / 初期化するハッシュ構造へのポインタ
- ngx_hash_key_pt キー; 列値の関数ポインタ
ngx_uint_t max_size; - // 許可されるバケットの最大数
ngx_uint_tbucket_size;各バケットに許可される最大スペース -
-
char- ) ngx_pool_t *pool // レイダンス構造体を分散するメモリプール内で使用します
ngx_pool_t*temp_pool - // メモリポンド一時データスペースを割り当てる} ngx_hash_init_t; 具体的な意味 意味 理解するには写真も見てください。ここではコードは解析されませんが、面倒に見えますが、それでも非常に便利です。
- 一般的な操作には、ハッシュの作成とハッシュ内の検索が含まれます。 ハッシュを作成します:1. キー、値、key を使用して計算されたハッシュ値を含む、ngx_hash_key_t をメンバーとして含む配列を構築します2 として、ngx_hash_t のメンバーを含む ngx_hash_init_t 構造体の変数を構築します。ハッシュ構造には、バケット サイズ、メモリ プールなどの他の初期設定も含まれます。
- 3. ngx_hash_init を呼び出し、ngx_hash_init_t 構造、ngx_hash_key_t の配列、および初期化用の配列の長さを渡します。 ngx_hash_init_t のメンバーは私たちのものです検索プロセスは非常に簡単です
1. キーのハッシュ値を計算します
2. 検索にはハッシュ値とキーを同時に渡す必要があります。返されるのは値ポインタです
なお、nginxのハッシュはバケット化後の線形検索方式を採用しているため、バケット数が決まると検索効率はkey-valの総数に反比例します。ペア
以上、nginx ソースコード学習メモ (10) - 基本コンテナ - ngx_hash について、関連内容も含めて紹介しましたので、PHP チュートリアルに興味のある友人の参考になれば幸いです。