nginx数据结构组件二

简介: nginx数据结构组件二

1 ngx_array_t动态数组

对于多变量场景,很容易想到使用array,固定的长度;当长度不够时,很容易想到再分配realloc。而针对优化对于分配内存的时候交给底层实现

a: 数据结构

struct {
    void *elts; //内存块,真正的数据
    ngx_uint_t  nelts;//已经使用了几个
    size_t size;  //单个结构体的大小
    uint_t  nalloc; //N分配多少个
    ngx_pool_t *pool;//内存池
};

b: 结构图

nginx中处理状态机,每个状态机的每个模块是如何存储的就是采用动态数组存储。具体如何存储??

c 接口

创建create;

向数组添加单个结构push

添加多个结构push_n;

释放是直接在内存池中释放;

扩容: 如果当前内存块剩余内存大于要申请的内存则,会在范围内一点一点的扩容;如果当前内存块剩余内存小于要申请的内存块,则会开2倍大小扩容。

d: 用途

一个状态存放多个模块,就是采用动态数组,conf中的server,location可采用。

2 ngx_shm_t 进程间通信

共享内存的三种做法:a mmap匿名 b:‘dev/zero’ c: shmget函数

接口:开辟,释放

内容在ngx_shmem.c文件

目录
相关文章
|
6月前
|
缓存 NoSQL 应用服务中间件
2.2.2 redis,memcached,nginx网络组件
2.2.2 redis,memcached,nginx网络组件
|
6月前
|
NoSQL Java 应用服务中间件
4.网络设计与redis、memcached、nginx组件(二)
4.网络设计与redis、memcached、nginx组件(二)
60 0
|
6月前
|
存储 NoSQL 应用服务中间件
4.网络设计与redis、memcached、nginx组件(一)
4.网络设计与redis、memcached、nginx组件(一)
117 0
|
负载均衡 NoSQL 应用服务中间件
redis、memcached、nginx网络组件
redis、memcached、nginx网络组件
140 0
|
1月前
|
NoSQL 网络协议 应用服务中间件
redis,memcached,nginx网络组件
redis,memcached,nginx网络组件
17 0
|
1月前
|
存储 缓存 应用服务中间件
Nginx入门 -- 基本数据结构中之ngx_hash_t
Nginx入门 -- 基本数据结构中之ngx_hash_t
36 0
|
1月前
|
运维 监控 应用服务中间件
nginx基本数据结构 - ngx_queue_t使用举例
nginx基本数据结构 - ngx_queue_t使用举例
32 0
|
1月前
|
存储 缓存 应用服务中间件
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
Nginx入门 -- 基本数据结构中之ngx_list_t,ngx_queue_t
25 0
|
1月前
|
存储 应用服务中间件 nginx
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
Nginx入门 -- 基本数据结构中之ngx_str_t,ngx_array_t
64 0
|
3月前
|
应用服务中间件 nginx 开发者
nginx基本数据结构 - ngx_queue_t使用举例
`ngx_queue_t`为Nginx提供了简单而强大的双向链表操作功能。其接口简洁,使用方便,适用于各种需要快速插入和删除元素的场景。在高并发的Nginx模块和其他代码中,`ngx_queue_t`提供了一种高效组织和管理数据的方法。通过对队列的高效操作,开发者可以极大地提升应用程序性能和稳定性,更好地处理并发数据流。
54 1