1.存储
memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存,Slab Allocator的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以期望完全解决内存碎片问题。而且,slab allocator还有重复使用已分配的内存的目的。 也就是说,分配到的内存不会释放,而是重复利用。
(1)page将以默认1M的大小分配给 slab,当某一类型的slab的chunk用完后,内存将继续划分page给slab扩展。如果没有Page可用,系统就会触发LRU机制,通过删除冷数据来为新数据腾出空间,这里有一点需要注意的是:LRU不是全局的,而是针对Slab而言的.
(2)slab里边的chunk默认将以 1.25倍的大小进行变化。
image.png
2.memcached的分布式在客户端实现,详情见 Memcached-探索Memcached-Java-Client的一致性hash算法(https://www.jianshu.com/p/267d2193cc35)