memcached源码

memcached源码

ID:20001735

大小:301.62 KB

页数:18页

时间:2018-10-08

memcached源码_第1页
memcached源码_第2页
memcached源码_第3页
memcached源码_第4页
memcached源码_第5页
资源描述:

《memcached源码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Memcached源码解析启动参数-m指定最大使用内存大小(默认64MB)-t线程数(默认4)-l绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)-m最大内存使用,单位MB。默认64MB-M内存耗尽时返回错误,而不是删除项-c最大同时连接数,默认是1024-f块大小增长因子,默认是1.25-n最小分配空间,key+value+flags默认是48-k锁定所有内存页。注意你可以锁定的内存上限。-p指定端口号(默认11211)-UUDP监听端

2、口(默认:11211,0时关闭)-LTrytouselargememorypages启动settings_init()//初始化setting从启动命令中读取设置hash_init()//根据hash_type,选择相应hash函数,默认是jenkinshashinit_sasl();//todomain_base=event_init();//initializemainthreadlibeventinstancestats_init();//统计数据初始化assoc_init(settings.hashpower_init);//初始化

3、hashtable,默认hashpower为16conn_init();//connection初始化slabs_init(settings.maxbytes,settings.factor,preallocate);thread_init(settings.num_threads,main_base);init_lru_crawler();数据结构slabcalss[1]slabclass[2]…size96Bperslab10922slab_listslabslist_sizeslotssl_currslab_listslab1slab

4、2slab3slab4slab5…slabnchunk1chunk2…chunk(n-3)chunk(n-2)chunk(n-1)chunknchunk1chunk2chunk3chunk4chunk5…chunk空闲链表的头nullhashtableh_nextslabcalss[1]slabclass[2]…size96Bperslab10922slab_listslabslist_sizeslotssl_currslab1slab2slab3slab4slab5…slabnchunk1chunk2chunk3chunk4chunk5c

5、hunk6chunk7chunk8…chunk(n-4)chunk(n-3)chunk(n-2)chunk(n-1)chunkn空闲链表的头hashtableheads[1]tails[1]橙色线代表空闲链表的双向链接蓝色线代表LRU链表的双向链接heads[1]记录了LRU链表头tails[1]记录了LRU链表尾部64Bslab结构–slabclass_ttypedefstruct{unsignedintsize;/*sizesofitems*/unsignedintperslab;/*howmanyitemsperslab*/void*

6、slots;/*listofitemptrs*/unsignedintsl_curr;/*totalfreeitemsinlist*/unsignedintslabs;/*howmanyslabswereallocatedforthisclass*/void**slab_list;/*arrayofslabpointers*/unsignedintlist_size;/*sizeofprevarray*/unsignedintkilling;/*index+1ofdyingslab,orzeroifnone*/size_trequested

7、;/*Thenumberofrequestedbytes*/}slabclass_t;slab相关的默认参数#definePOWER_SMALLEST1#definePOWER_LARGEST200#defineCHUNK_ALIGN_BYTES8#defineMAX_NUMBER_OF_SLAB_CLASSES(POWER_LARGEST+1)slab_initlimit:使用的内存大小,factor:增长因子,prealloc:是否预先分配voidslabs_init(constsize_tlimit,constdoublefactor

8、,constboolprealloc)1.若是预先分配,先malloc一块大内存2.计算每个slabclass的size大小,最小的size为sizeof(item)+setti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。