nginx_hash表
生活随笔
收集整理的這篇文章主要介紹了
nginx_hash表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
typedef struct { //hash元素結構void *value; //value,即某個key對應的值,即<key,value>中的valueu_short len; //name長度u_char name[1]; //某個要hash的數據(在nginx中表現為字符串),即<key,value>中的key
} ngx_hash_elt_t;typedef struct { //hash結構ngx_hash_elt_t **buckets; //hash桶(有size個桶)ngx_uint_t size; //hash桶個數
} ngx_hash_t;typedef struct { //hash初始化結構ngx_hash_t *hash; //指向待初始化的hash結構ngx_hash_key_pt key; //hash函數指針ngx_uint_t max_size; //bucket的最大個數ngx_uint_t bucket_size; //每個bucket的空間char *name; //該hash結構的名字(僅在錯誤日志中使用)ngx_pool_t *pool; //該hash結構從pool指向的內存池中分配ngx_pool_t *temp_pool; //分配臨時數據空間的內存池
} ngx_hash_init_t; //用于初始化hashtypedef struct { //hash key結構ngx_str_t key; //key, 為nginx的字符串結構ngx_uint_t key_hash; //由該key計算出的hash值(通過hash函數如ngx_hash_key_1c())void *value; //該key對應的值,組成一個鍵-值對<key,value>
} ngx_hash_key_t;1) hash初始化hash初始化由ngx_hash_init()函數完成,其names參數是ngx_hash_key_t結構的數組,
即鍵-值對<key,value>數組,nelts表示該數組元素的個數。因此,在調用該函數進行初始化
之前,ngx_hash_key_t結構的數組是準備好的,如何使用,可以采用nginx的ngx_array_t結構。該函數初始化的結果就是將names數組保存的鍵-值對<key,value>,通過hash的方式將其
存入相應的一個或多個hash桶(即代碼中的buckets)中,該hash過程用到的hash函數一般為
ngx_hash_key_1c等。hash桶里面存放的是ngx_hash_elt_t結構的指針(hash元素指針),
該指針指向一個基本連接的數據區。該數據區中存放的是經hash之后的鍵-值對<key', value'>,
即ngx_hash_elt_t結構中的字段<name, value>。每一個這樣的數據區存放的鍵-值對<key', value'>
可以是一個或多個。
轉載:https://www.cnblogs.com/Z465360621/articles/3964500.html
總結
以上是生活随笔為你收集整理的nginx_hash表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx学习笔记---ngx_tabl
- 下一篇: nginx会话保持值sticky模块