如何在 Memcached 服务器中分配 slab?

How the slabs are allocated in Memcached server?

我决定在我的 Nodejs 中使用 Memcached 包 application.I 希望了解 Memcached 中的 slab 分配器 server.How slab 是如何分配的以及这些值是如何存储在 slab 中的?

Memcached 将分配的内存拆分为固定大小 (1 MB) 的 'Pages'。每个页面进一步分为 'Chunks' 并与一些 'Slab' 相关联。

A 'Slab' 将与具有相同大小的 'Chunks' 的多个 'Pages' 相关联,以将值保存在某个范围内,最大值作为块大小。鉴于此类比,块大小可以是页面大小的最大值,即 1MB。这解释了为什么要存储在内存缓存中的值的最大大小被限制为 1MB。

我们举个例子来说明一下。你想存储一个 1001 字节的值; memcached 将查找包含 1000 到 2000 字节之间值的 slab。然后它找到一个包含空块的页面并将值插入该块。你可以找到类似的讨论 here.

希望对您有所帮助!