- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
表示客户端输入
您可能关注的文档
- 动画制作发展历史.doc
- 界面划分表格初稿要领.docx
- javahashtable用法.docx
- 存储过程概念.doc
- 第三终端开发营销形式.doc
- 第五章 Tcp异步通信代码.docx
- 衣柜终端销售实例资料.docx
- 第十三章 计算机组成名词解释.doc
- 更改及设置系统开机启动菜单方法.docx
- 小学一年级数学解决问题资料.doc
- 高中历史研究:校园历史建筑保护与文化旅游开发教学研究课题报告.docx
- 智能制造环境下机械产品质量追溯系统的数据安全与隐私保护策略教学研究课题报告.docx
- 校园文化建设与学校品牌形象塑造中的学生道德品质教育教学研究课题报告.docx
- 高中政治数字教育资源轻量化设计对德育教学效果的影响分析教学研究课题报告.docx
- 基于PBL的初中历史作业设计模式探究教学研究课题报告.docx
- ESP8266智能插座用电量监控在小学科学教育中的应用与拓展教学研究课题报告.docx
- 基于AR与AI的小学生科学实验个性化学习资源开发与教学效果评估教学研究课题报告.docx
- 初中社团活动经费使用监管问题及对策研究教学研究课题报告.docx
- 3 《农村普惠金融在农业产业扶贫中的政策支持与实施效果研究》教学研究课题报告.docx
- 《智能建筑系统集成在大型商业综合体智能安防与监控技术应用创新与实践》教学研究课题报告.docx
文档评论(0)