首頁 > 資料庫 > mysql教程 > Memcached内存分配

Memcached内存分配

WBOY
發布: 2016-06-07 16:39:18
原創
1165 人瀏覽過

Memcached是在项目中常使用的分布式缓存服务。很好的解决了MySQL数据库的访问压力。所以我们要懂它,用好它。 Memcached有三个概念:page,slabs,chunk,要理解Memcached是如何来存储数据的,那就要理解这三个概念是怎么一回事。 Page Memcached的内存分配

Memcached是在项目中常使用的分布式缓存服务。很好的解决了MySQL数据库的访问压力。所以我们要懂它,用好它。

Memcached有三个概念:page,slabs,chunk,要理解Memcached是如何来存储数据的,那就要理解这三个概念是怎么一回事。

Page

Memcached的内存分配是以page为单位的,默认情况下一个page是1M大小。当需要申请内存时,memcached会划分一个page给需要的slabs区域。

slabs

Memcached不是将所有大小的数据都存在一块的,而是预先划分出不同的区域将不同大小的数据分别存放,这就是slabs。每个slabs只负责存储一定范围大小的数据(由chunk决定)。

chunk

chunk是memcached实际存放数据的地方,chunk的大小就是管理它的slabs的最大值,所以分配给当前chunk的数据都能被存下,如果数据小于当前chunk的大小,那么剩余的空间将被闲置,这是防止内存碎片划而设计的。

内存分配

Memcached在启动的时候会开辟一块内存(可以通过-m参数修改),这些内存是按需分配给slabs的。当一个缓存数据需要被存放时,memcached首选要确定对应的slabs,如果此slabs没有足够空间,那么就要申请空间,申请一个page大小的空间,然后按照当前slabs的size(也就是chunk的大小)切分成若干个chunk,然后再将数据存入某一个chunk中。

slbas内存分配实例

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板