memcached是缓存,所以数据不会永远存储保存在服务器,这是向系统引入mecached前提。
memcached删除机制:有效利用资源
memcached不会释放以分配内存,记录超时后,客户端无法看见该记录,存储空间可重复使用。
memcached内部不会监视记录是否过期,在get时才会检查,成为lazy(惰性),因此memcached不会在监视上耗费CPU时间。
LUR:从缓存中有效删除数据的原理
memcached会优先使用已超时空间,即使如此,在空间不足下,会使用Least Recently Used机制分配空间。从最近未被是用地空间记录中搜索,将内存分配给新纪录。
memcached最新发展方向:
两大发展目标:二进制协议的策划和实现;外部引擎的加载功能。
二进制协议:
它不需要文本协议的解析处理,使原先高速上得性能更上一层楼,还能减少文本漏洞。
协议的包为24帧,其后面是键和无结构数据。
外部引擎:
外部引擎的加载机制能封装memcached的网络功能、事件处理等复杂的处理。因此,现阶段通过强
制手段或重新设计等方式使memcached和存储引擎合作的困难就会烟消云散,尝试各种引擎就会变
得轻而易举了。
引擎应当完成的操作:
• 引擎信息(版本等)
• 引擎初始化
• 引擎关闭
• 引擎的统计信息
• 在容量方面,测试给定记录能否保存
• 为item(记录)结构分配内存
• 释放item(记录)的内存
• 删除记录
• 保存记录
• 回收记录
• 更新记录的时间戳
• 数学运算处理
• 数据的flush
memcached支持外部存储的难点:网络和事件处理相关的代码(核心服务器)与内存存储的代码紧密关联。这种现象也称为tightly coupled(紧密耦合)。必须将内存存储的代码从核心服务器中独立出来,才能灵活地支持外部引擎。因此,基于我们设计的APImemcached被重构成下面的样子: