memcached存储机制与过期机制

来源:互联网 发布:弱电箱的网络模块 编辑:程序博客网 时间:2024/06/07 13:02
一、存储机制
1.内存的碎片化
如果用c语言直接malloc,free函数来向操作系统申请和释放内存时
在不断的申请和释放过程中,就形成了一些很小的内存片断,无法再利用,
这种空闲的,但无法利用内存的现象,称为内存碎片化

2.slab allocator缓解内存碎片化
slab allocator 原理:预先把内存划分成数个slab class仓库
各个仓库,切分不同大小的chunk
要在内容时,判断内容大小,为其选取合理的仓库



chunks 大小可以在增长因子中设置,memcached -m 64 -p 11211 -f 1.25 -vv

如果有memcached 只100个112字节的chunk,这100个112字节都满了,如果又有一个数据要存放在112字节的chunk,那么它会把112字节的chunk中的某个数据删掉,然后存放。

二、过期与删除机制
1、当某个值过期后,并没有从内存中删除,因此stats时curr_items 有其信息,
2、如果get其值时,判断其是不是过期,如果过期返回空,并且清空
3、如果之前没有get过,将不会自动删除,当某个新值要占用他的位置,则当在空的chunk给新值使用。

这个过期只是让用户看不到这个数据而已,并没有在过期瞬间立即删除,这个称为惰性失效机制
好处--节省了cpu时间和检测的成本

如果有个112字节新数据在存放,相应大小chunk都满了, memcache用LRU删除数据,删除一个老数据。

(LRU Last Recently Used)最近最少使用
(FIFO first in first out)先进先出,队列


原创粉丝点击