10_Nginx容器

本文探讨了Nginx容器中两种重要的数据结构——哈希表和红黑树。哈希表在Nginx中用于静态内容,如变量、映射和反向代理,其bucket_size设计考虑了CPU缓存对齐。红黑树则是一种平衡二叉查找树,保证增删查改操作的时间复杂度,并在多个Nginx模块中得到应用。
摘要由CSDN通过智能技术生成

文章目录


  • 6个容器: 数组,链表, 队列, hash表, 红黑树, 基数树

哈希表

  • 应用场景: nginx 哈希表通常只会静态不变的内容,在运行过程中不会出现插入和删除, nginx 启动时就确定元素个数;(bucket_size; max_size)
  • 使用的模块: variables(stream/http); map(stream/http); 反向代理; http module; http core;
  • bucket_size 对齐问题: 以 cpu_cache 向上取整;减少访问 hash 表(主存/内存)的次数; 例如 分配53 会向上取整到64;

红黑树

  • 二叉树
  • 查找树二叉树:左边节点比右边节点小;
  • 高度差不会超过两倍log(n);
  • 增删改查算法复杂度 O(long(n));
  • 遍历复杂度 O(n);
  • 使用红黑树的模块: ngx_conf_module; ngx_http_limit_conn_module; ngx_http_limit_req_module; ngx_http_lua_shdict:ngx.shared.DICT(lru链表性质); ngx_http_file_cache;ngx_http_geo_module;ngx_stream_geo_module;等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值