结构介绍
MemCache有几种内存概念:slab_class
、slab
、chunk
slab_class
:拥有同样chunk大小的slab被组织在一起,成为slab_class。
slab
:MemCache将内存空间分为一组slab,slab下面是若干个chunk,默认大小为1M。
chunk
:chunk是真正存储数据的地方,同一个slab里面chunk的大小是一样的。chunk的增长因子由-f指定,默认1.25,起始大小为48字节;
MemCache中的value过来存放的地方是由value的大小决定的,value总是会被存放到与chunk大小最接近的一个slab中,比如slabclass[1]的chunk大小为80字节、slabclass[2]的chunk大小为100字节、slabclass[3]的chunk大小为128字节(相邻slab_class内的chunk基本以1.25为比例进行增长,MemCache启动时可以用-f指定这个比例),那么过来一个88字节的value,这个value将被放到2号slab中。放slab的时候,首先slab要申请内存,申请内存是以slab为单位的,所以在放入第一个数据的时候,无论大小为多少,都会有1M大小的内存被分配给该slab。申请到后,slab会将内存按chunk的大小进行切分,这样就变成了一个chunk数组,最后从这个chunk数组中选择一个用于存储数据。
slab_class
这里是slab_class结构的定义:
|
|
item
在MemCache中,item是用于存储数据的结构
|
|