77范文网 - 专业文章范例文档资料分享平台

memcached全面剖析 3 memcached的删除机制和发展方向

来源:网络收集 时间:2019-02-16 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

memcached全面剖析

–3.memcached的删除机制和发展方向

下面是《memcached全面剖析》的第三部分。

发表日:2008/7/16

作者:前坂徹(Toru Maesaka)

原文链接:http://gihyo.jp/dev/feature/01/memcached/0003

memcached是缓存,所以数据不会永久保存在服务器上,这是向系统中引入memcached的前提。本次介绍memcached的数据删除机制,以及memcached的最新发展方向——二进制协议(Binary Protocol)和外部引擎支持。 memcached在数据删除方面有效利用资源

数据不会真正从memcached中消失

上次介绍过, memcached不会释放已分配的内存。记录超时后,客户端就无法再看见该记录(invisible,透明),其存储空间即可重复使用。

Lazy Expiration

memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。

LRU:从缓存中有效删除数据的原理

memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。从缓存的实用角度来看,该模型十分理想。

不过,有些情况下LRU机制反倒会造成麻烦。memcached启动时通过“-M”参数可以禁止LRU,如下所示:

$ memcached -M -m 1024

启动时必须注意的是,小写的“-m”选项是用来指定最大内存大小的。不指定具体数值则使用默认值64MB。

指定“-M”参数启动后,内存用尽时memcached会返回错误。话说回来,memcached毕竟不是存储器,而是缓存,所以推荐使用LRU。 memcached的最新发展方向

memcached的roadmap上有两个大的目标。一个是二进制协议的策划和实现,另一个是外部引擎的加载功能。

关于二进制协议

使用二进制协议的理由是它不需要文本协议的解析处理,使得原本高速的memcached的性能更上一层楼,还能减少文本协议的漏洞。目前已大部分实现,开发用的代码库中已包含了该功能。 memcached的下载页面上有代码库的链接。

? http://danga.com/memcached/download.bml

二进制协议的格式

协议的包为24字节的帧,其后面是键和无结构数据(Unstructured Data)。实际的格式如下(引自协议文档):

Byte/ 0 | 1 | 2 | 3 |

/ | | | |

|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|

+---------------+---------------+---------------+---------------+

0/ HEADER /

/ /

/ /

/ /

+---------------+---------------+---------------+---------------+

24/ COMMAND-SPECIFIC EXTRAS (as needed) /

+/ (note length in th extras length header field) /

+---------------+---------------+---------------+---------------+

m/ Key (as needed) /

+/ (note length in key length header field) /

+---------------+---------------+---------------+---------------+

n/ Value (as needed) /

+/ (note length is total body length header field, minus /

+/ sum of the extras and key length body fields) /

+---------------+---------------+---------------+---------------+

Total 24 bytes

如上所示,包格式十分简单。需要注意的是,占据了16字节的头部(HEADER)分为请求头(Request Header)和响应头(Response Header)两种。头部中包含了表示包的有效性的Magic字节、命令种类、键长度、值长度等信息,格式如下:

Request Header

Byte/ 0 | 1 | 2 | 3 |

/ | | | |

|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|

+---------------+---------------+---------------+---------------+

0| Magic | Opcode | Key length |

+---------------+---------------+---------------+---------------+

4| Extras length | Data type | Reserved |

+---------------+---------------+---------------+---------------+

8| Total body length |

+---------------+---------------+---------------+---------------+

12| Opaque |

+---------------+---------------+---------------+---------------+

16| CAS |

| |

+---------------+---------------+---------------+---------------+

Response Header

Byte/ 0 | 1 | 2 | 3 |

/ | | | |

|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|0 1 2 3 4 5 6 7|

+---------------+---------------+---------------+---------------+

0| Magic | Opcode | Key Length |

+---------------+---------------+---------------+---------------+

4| Extras length | Data type | Status |

+---------------+---------------+---------------+---------------+

8| Total body length |

+---------------+---------------+---------------+---------------+

12| Opaque |

+---------------+---------------+---------------+---------------+

16| CAS |

| |

+---------------+---------------+---------------+---------------+

如希望了解各个部分的详细内容,可以checkout出memcached的二进制协议的代码树,参考其中的docs文件夹中的protocol_binary.txt文档。

HEADER中引人注目的地方

看到HEADER格式后我的感想是,键的上限太大了!现在的memcached规格中,键长度最大为250字节,但二进制协议中键的大小用2字节表示。因此,理论上最大可使用65536字节

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库memcached全面剖析 3 memcached的删除机制和发展方向在线全文阅读。

memcached全面剖析 3 memcached的删除机制和发展方向.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/474670.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: