memcache内存管理机制

来源:互联网 发布:ai平面设计软件下载 编辑:程序博客网 时间:2024/05/01 11:39

memcache内存管理机制

memcache内存32位系统下最大设置为2g

memcache采用slab allocator 机制来管理内存
预先将内存划分为数个slab class 小块 各仓库切割成不同大小的小块。
需要内存时,判断内容大小时,为其选取合适大小的小仓库。

当memcache收到数据后会根据数据的大小选取最合适的slab class 组
memcache中保存着slab class 空闲列表的信息

如果接收到一个100k的数据时 122k的slab class 没有空闲,memcache 不会去查找144k的slab class 而回根据一定的规则踢掉122k的旧数据

slab allocator机制会造成内存的浪费,对于内存的浪费无法解决只能缓解,使用者可以根据实际情况,
定义slab class 大小的增长因子来调节slab class 的大小 ,避免过多的浪费内存

增长因子默认为1.25 , 在memcache 启动时可以通过memcached -f 来指定


memcache的惰性删除

当memcache中的数据过期时并没有直接从内存中删除,使用stats 统计时curr_itme 还有其值
当某个数据去占用它的位置时,当做空的占用
当使用get获取它的值得时候先判断是否过期,如果过期返回null,并将其清空,curr_item就会减少

所以memcache的过期并不是立即删除只是让用户看不到这个数据,这样做的节省了cpu的时间和检测成本

memcache的数据踢出机制lru

当122k的slab class 都满了,现有一个120k的数据要存储会挤掉谁?
lru:最近最少使用原则
当某个单元被请求时,维护一个计数器,通过计数器判断,谁最近最少被使用 ,就把谁踢出去
即使设置为永久有效也会被踢出来





0 0
原创粉丝点击