memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程
2016-04-09 12:38
721 查看
1.1.1. 新建Item分配内存过程
1:快速定位slab classid,先计算Item长度key键长+flag+suffix(16字节)+value值长+结构大小(32字节),如90byte
如果>1MB,无法存储丢弃
取最小冗余的slab class
如:有48,96,120,存90会选择96
1.1.2. 按顺序寻找可用chunk顺序
(1)slot:检查slab回收空间slot里是否有剩余chunkdelete:delete时标记到slot
exptime:get时检查的过期对象标记到slot
(2)end_page_ptr:检查page中是否有剩余chunk
(3)memory:内存还有剩余空间可以用于开辟新的slab
(4)LRU
Memcached的数据存储方式的缺点
由于chunk的大小是预先分配好的特定长度,因此如果数据不能完全填满
chunk,那么剩余的空间就浪费了
1.1.3. Lazy Expiration(延迟/惰性 过期)
Memcached不会监控记录是否过期,而是在外部来获取数据的时候,才检查记录的时间戳,因此称为Lazy Expiration。LRU(Least Recently Used最近最少使用)
当空间不足的时候,Memcached会优先使用已经过期的数据空间,如果还不够,那么就会把最近最少使用的对象的空间释放出来使用。
懒惰删除机制
删除item对象时,不释放内存,作删除标记,指针放入slot回收插槽,下次分配的时候直接使用要特别注意:Memcached的LRU不是全局的,而是针对slab的,可以说是区域性的
每个slab进行lru
相关文章推荐
- memcached实战系列(七)理解Memcached的数据过期方式、新建过程、查找过程
- memcached实战系列(六)理解Memcached的数据存储方式
- memcached实战系列(六)理解Memcached的数据存储方式
- 02-Memcached安装
- memcached实战系列(五)Memcached: List all keys 查询所有的key
- memcached实战系列(五)Memcached: List all keys 查询所有的key
- memcached实战系列(四)memcached stats命令 memcached优化
- memcached实战系列(四)memcached stats命令 memcached优化
- memcached实战系列(三)memcached命令使用
- memcached实战系列(三)memcached命令使用
- memcached实战系列(二)memcached参数以及启动
- memcached实战系列(二)memcached参数以及启动
- memcached实战系列(一)memcached安装
- memcached实战系列(一)memcached安装
- 安装memcache
- linux上安装php7 memcache扩展 和 安装服务端memcached
- Memcache简介
- Mac下安装libeven和memcached
- Redis和Memcache对比及选择
- 查看、分析memcached使用状态