Memcache全面解析
2017-04-14 12:00:30 1 举报
Memcache全面解析
作者其他创作
大纲/内容
缺点
Slab Allocator 的基本原理是按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问题
通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的速度、提高可扩展性
概念
安装
Memcache
4. 不互相通信的分布式
特点
memcached 是高性能的分布式内存缓存服务器
采用Slab Allocation 机制:整理内存以便重复使用
数据删除机制
很多语言都实现了连接Memcache的客户端:Perl\\C#\\Python\\php...
内存存储
原理
Page:分配给 Slab 的内存空间,默认是 1MB。分配给 Slab 之后根据 slab 的大小切分成 chunk。Chunk:用于缓存记录的内存空间。Slab Class:特定大小的 chunk 的组。
这个问题就是,由于分配的是特定长度的内存,因此无法有效利用分配的内存。例如,将 100 字节的数据缓存到 128 字节的 chunk 中,剩余的 28 字节就浪费了
一个是二进制协议的策划和实现,另一个是外部引擎的加载功能
最新发展方向
memcached 中保存的数据都存储在 memcached 内置的内存存储空间中。由于数据仅存在于内存中,因此重启 memcached、重启操作系统会导致全部数据消失
memcached 会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当 memcached 的内存空间不足时(无法从 slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。
memcached 在启动时指定 Growth Factor 因子(通过f 选项),就可以在某种程度上控制 slab 之间的差异。默认值为 1.25。但是,在该选项出现之前,这个因子曾经固定为 2,称为“powers of 2”策略
即使对服务器的连接数增加,也能发挥 O(1)的性能。memcached 使用这个 libevent 库,因此能在 Linux、BSD、Solaris 等操作系统上发挥其高性能
3. 内置内存存储方式
1. 协议简单
2. 基于libevent
服务器端与客户端采用简单的文本通信,而不是XML
客户端连接
构造图
术语
分布式算法
目的
调优
memcached 尽管是“分布式”缓存服务器,但服务器端并没有分布式功能。各个 memcached 不会互相通信以共享信息
收藏
收藏
0 条评论
下一页