memcached-数据结构
时间:2010-05-04 来源:reesun
typedef struct _stritem { |
在memcached中每个item 是存储在其对应大小的slabclass_t 里的,同时又在hash 表中有记录。既可以使用自己的内存分配机制来减少操作系统在处理内存碎片,添加释放等多余的操作,又可以使用hash 表的性质对其进行快速的定位。
2、slab(slabclass_t)结构体(slabs.c 26行-44行): slabclass_t保存了分级大小的空间槽,以分别适用于不同大小的item存放.取决于两个命令行参数,-f和-n.在应用slabclass_t时,定义的是一个数组,该数组长度取决于增长的指数级别和初始值大小(32+chunk_size),每个空间槽是不允许大于1M的,也就是1048576。slabclass是由(MAX_NUMBER_OF_SLAB_CLASSES)个slabclass_t结构体构成的数组,每个slabclass_t结构体的大小是根据增长因子递增的,增长因子可以由客户端来设定,1.28版本的默认值为2,合理的调优增长因子可以避免空间的浪费
typedef struct { |
3、conn结构体(memcached.h 330行-417行): conn结构是联系上下文的关键对象。对于每个连接的到来,都有一个conn结构与其对应,并且对应到某个连接状态,进入状态转换而完成操作。
conn在程序开始也进行了一次预分配,分配200个连接空间。当200个使用完之后便是按需分配,到达一个分配一个。
conn和item、iovec(内核级别缓冲结构)关联
typedef struct conn conn;
*这个结构体在读入命令行(set/add/replace)后被创建,
|