网站大量收购独家精品文档,联系QQ:2885784924

第三章 Memcached通讯协议.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Memcache 通信协议 (注:memcachedv1.3 以前的版本使用的是基于文本行的协议,到v1.3 及以后的版本开 始使用基于二进制的协议了。) 1 协议 memcached 的客户端通过TCP 连接与服务器通信(UDP 协议的接口也可以使用 详细说明请参考”UDP 协议”部分)。一个给定的运行中的 memcached 服务器在某个 (可配置的)端口上监听连接;客户端连接该端口,发送命令给服务器,读取反馈,最后 关闭连接。 没有必要发送一个专门的命令去结束会话。客户端可以在不需要该连接的时候就关闭 它。注意:我们鼓励客户端缓存它们与服务器的连接,而不是每次要存储或读取数据的时 候再次重新建立与服务器的连接。memcache 同时打开很多连接不会对性能造成到大的 影响,这是因为 memcache 在设计之初,就被设计成即使打开了很多连接(数百或者需 要时上千个连接)也可以高效的运行。缓存连接可以节省与服务器建立 TCP 连接的时间开 销(与此相比,在服务器端为建立一个新的连接所做准备的开销可以忽略不计)。 memcache 通信协议有两种类型的数据:文本行和非结构化数据。文本行用来发送 从客户端到服务器的命令以及从服务器回送的反馈信息。非结构化的数据用在客户端希望 存储或者读取数据时。服务器会以字符流的形式严格准确的返回相应数据在存储时存储的 数据。服务器不关注字节序,它也不知道字节序的存在。memcahce 对非结构化数据中 的字符没有任何限制,可以是任意的字符,读取数据时,客户端可以在前次返回的文本行 中确切的知道接下来的数据块的长度。 文本行通常以“\r\n”结束。非结构化数据通常也是以“\r\n”结束,尽管\r、 \n 或者其他任何 8 位字符可以出现在数据块中。所以当客户端从服务器读取数据时,必须 使用前面提供的数据块的长度,来确定数据流的结束,而不是依据跟随在字符流尾部的 “\r\n”来确定数据流的结束,尽管实际上数据流格式如此。 2 关键字 Keys memcached 使用关键字来区分存储不同的数据。关键字是一个字符串,可以唯一标 识一条数据。当前关键字的长度限制是 250 个字符(当然目前客户端似乎没有需求用这么 长的关键字);关键字一定不能包含控制字符和空格。 3 命令 Commands memcahe 有 3 种类型的命令:  存储命令— (3 个命令:set、add 和 replace)要求服务器安装关键字存储数 据。客户端发送一个命令行,然后一个数据块;命令执行后客户端等待一行反馈 用来表示命令执行成功与否。  读取命令-- (只有1 个命令:get)要求服务器根据一组关键字读取数据(在 一个请求总可以包含一个或多个关键字)。客户端发送一个包含请求关键字的命 令行;命令传递到服务器后,服务器就查找每一个关键字下的数据,然户将数据 以“一个关键字数据,一个反馈信息行跟着一个数据块”的格式回送数据,直到 服务器发送“END”的反馈行。  其他命令,如 flush_all version 等。这些命令不使用非结构化的数据。对于 这些命令,客户端发送一个文本的命令行,根据命令的特性等待一行数据或者在 最后一行以“END “结尾的几行反馈信息。 所有的命令行总是以命令的名字开始,紧接着是以空格分割的参数。命令名称都是小 写,并且是大小写敏感的。 4 超时时间 Expiration times 一些发送到服务器的命令包含超时时间(该超时时间对应于:数据项保存时间;客户 端操作限时)。在这些例子中,被发送的真实时间要么是 UNIX 时间戳(自 1970 年 1 月 1 日零时起的秒数数值),或者从当前时间开始算起的秒数。对于后一种情况,秒数的数 值不能超过 60*60*24*30 (30 天的秒数);如果秒数的数值大于了这个数值,服务器 会认为该数值是 UNIX 时间戳,而不是自当前时间开始的秒数偏移值。 5 错误信息 Error strings 每个命令都有可能被反馈以一个错误消息。这些错误消息有以下三个类型:  “ERROR\r\n” 意味着客户端发送了一个在协议中不存在的命令。  CLIENT_ERROR error\r\n 表示客户端输入

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档