Memcached内存分配
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内存分配实例
原文地址:Memcached内存分配, 感谢原作者分享。
推荐阅读
-
几种内存遍历写法的效率比较
-
phpExcel导出大量数据出现内存溢出错误的解决方法_PHP教程
-
InnoDB Memcached Plugin源码实现调研
-
详细介绍Memcached是什么?_PHP教程
-
RedmiBook 14锐龙版售3599:锐龙R5加持 16G内存+512G存储
-
无语的indexhint:手工分配哈希区,5小时不出结果,优化后20分钟
-
采用PHP函数memory_get_usage获取PHP内存清耗量的方法_PHP
-
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
-
华为公布全新内存升级计划!nova/畅享等老机型满血复活
-
全键盘设计 黑莓KEY2 Lite参数曝光:骁龙636、4GB内存