nginx的hash
来源:互联网 发布:vb开源游戏引擎 编辑:程序博客网 时间:2024/05/16 04:24
ngx_hash_t结构
typedef struct { //hash元素结构
void *value; //value,即某个key对应的值,即<key,value>中的value
u_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;
其中,sizeof(ngx_hash_t) = 8,sizeof(ngx_hash_elt_t) = 8。实际上,ngx_hash_elt_t结构中的name字段就是ngx_hash_key_t结构中的key。
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;
ngx_hash_key_t结构
该结构也主要用来保存要hash的数据,即键-值对<key,value>,在实际使用中,一般将多个键-值对保存在ngx_hash_key_t结构的数组中,作为参数传给ngx_hash_init()或ngx_hash_wildcard_init()函数。其定义如下。
typedef struct { //hash key结构
ngx_str_t key; //key,为nginx的字符串结构
ngx_uint_t key_hash; //由该key计算出的hash值(通过hash函数如ngx_hash_key_lc())
void *value; //该key对应的值,组成一个键-值对<key,value>
} ngx_hash_key_t;
typedef struct { //字符串结构
size_t len; //字符串长度
u_char *data; //字符串内容
} ngx_str_t;
其中,sizeof(ngx_hash_key_t) = 16。一般在使用中,value指针可能指向静态数据区(例如全局数组、常量字符串)、堆区(例如动态分配的数据区用来保存value值)等。
typedef struct { //hash元素结构
void *value; //value,即某个key对应的值,即<key,value>中的value
u_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;
其中,sizeof(ngx_hash_t) = 8,sizeof(ngx_hash_elt_t) = 8。实际上,ngx_hash_elt_t结构中的name字段就是ngx_hash_key_t结构中的key。
ngx_hash_init_t结构
sizeof(ngx_hash_init_t)=28。
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;
ngx_hash_key_t结构
该结构也主要用来保存要hash的数据,即键-值对<key,value>,在实际使用中,一般将多个键-值对保存在ngx_hash_key_t结构的数组中,作为参数传给ngx_hash_init()或ngx_hash_wildcard_init()函数。其定义如下。
typedef struct { //hash key结构
ngx_str_t key; //key,为nginx的字符串结构
ngx_uint_t key_hash; //由该key计算出的hash值(通过hash函数如ngx_hash_key_lc())
void *value; //该key对应的值,组成一个键-值对<key,value>
} ngx_hash_key_t;
typedef struct { //字符串结构
size_t len; //字符串长度
u_char *data; //字符串内容
} ngx_str_t;
其中,sizeof(ngx_hash_key_t) = 16。一般在使用中,value指针可能指向静态数据区(例如全局数组、常量字符串)、堆区(例如动态分配的数据区用来保存value值)等。
阅读全文
0 0
- nginx的hash
- nginx的hash
- nginx的hash表结构
- nginx----hash
- nginx的hash和一致性hash的区别
- nginx源码分析(1):hash的使用
- 自定义方式实现nginx的url hash
- nginx 基本hash的初始化 源码分析
- [转]Nginx hash Module
- nginx -- datastruct:hash
- nginx hash 结构
- nginx 配置一致性hash
- nginx之hash
- nginx ip hash
- nginx hash实现
- Nginx hash结构
- nginx hash结构
- nginx中hash表的设计与实现
- 远程oracle热备
- (读书笔记)《玩着玩着就能成为PPT高手》——说的漂亮
- Centos 6.9 Redis 4.0.1 主从配置
- 原生JS页面初始化事件以及Jquery初始化页面加载事件
- HDU
- nginx的hash
- 闵维方、魏新与令计划家族的瓜葛
- Java四种线程池的使用
- 请求重定向与请求转发的区别
- android--as下,apk调试运行OK,在手机上安装apk却出现闪退的解决办法
- 用责任链模式写注册逻辑
- mybatis generator逆向工程生成一对多映射
- 超强、超详细Redis数据库入门教程
- 积分图像和积分直方图