最近版本,增加了虚拟节点的设计,进一步提升了可用性。
memcached仅支持基础的key-value键值对类型数据存储
在memcached内存结构中有两个非常重要的概念:slab和chunk
slab是一个内存块,是memcached一次申请内存的最小单位
在启动memcached的时候一般会使用参数-m指定其可用内存,但并非在启动的那一刻所有的内存就全部分配,只有在需要的时候才会去申请,而且每次申请一定是一个slab
slab的大小固定为1M,一个slab由若干个大小相等的chunk组成
每个chunk中都保存了一个item结构体、一对key/value
虽然在同一个slab中chunk的大小相等的,但是在不同的slab中chunk的大小并不一定相等
在memcached中按照chunk的大小不同,可以把slab分为很多种类(class),默认情况下memcached把slab分为40类(class1~class40),在class 1中,chunk的大小为80字节,由于一个slab的大小是固定的1M,因此在class1中最多可以有13107个chunk(也就是这个slab能存最多13107个小于80字节的key-value数据)
memcached内存管理采取预分配、分组管理
-
分组管理就是我们上面提到的slab class