欢迎来到天天文库
浏览记录
ID:49200075
大小:62.50 KB
页数:7页
时间:2020-03-01
《Memcache协议中文版.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、写在前头偶然之间看到本文的屮英文对照版本,感觉看起来不是很方便,于是花费了半个小吋的吋间,仔细整理出了独立的屮文版本,并记录下来。协议memcached的客户端使用TCP链接与服务器通讯。(UDP接口也同样有效,参考后文的"UDP协议”)一个运行屮的memcached服务器监视一•些(可设置)端口。客户端连接这些端口,发送命令到服务器,读取回应,最后关闭连接。结束会话不需要发送任何命令。肖不再需memcached服务吋,要客户端可以在任何吋候关闭连接。需要注意的是,鼓励客户端缓存这些连接,而不是每次需要存取数据时都重新打开连接。这是因为memcached
2、被特意设计成及时开启很多连接也能够高效的工作(数百个,上干个如果需要的话)。缓存这些连接,可以消除建立连接所带来的开销(/*/相对而言,在服务器端建立一个新连接的准备工作所带来的开销,可以忽略不计。)。在memcache协议屮发送的数据分两种:文木行和自由数据。文木行被用于来自客户端的命令和服务器的回应。自由数据用于客户端从服务器端存取数据时。同样服务器会以字节流的方式传回H由数据。/*/服务器不用关心H由数据的字节顺序。口由数据的特征没有任何限制;但是通过前文提到的文本行,这项数据的接受者(服务器或客户端),便能够精确地获知所发送的数据库的长度。文本行
3、固定以(冋车符紧跟一个换行符)结束。自由数据也是同样会以=「屮结束,但是「(回车符)、(换行符),以及任何其他8位字符,均可出现在数据屮。因此,半客户端从服务器取凹数据时,必须使用数据区块的长度来确定数据区块的结束位置,而不要依据数据区块末尾的-r-,即使它们固定存在于此。键值存储在memcachedlP的数据通过键值来标识。键值是一个文本字符屮,对于需要存取这项数据的客户端血言,它必须是唯一的。键值半前的长度限制设定为250字符(当然,客户端通常不会用到这么长的键);键值屮不能使用制表符和其他空白字符(例如空格,换行等)。命令所有命令分为
4、3种类型:存储命令(有3项:Met、匕dcT、YepalceO指示服务器储存一些由键值标识的数据。客户端发送一•行命令,后面跟着数据区块;然后,客户端等待接收服务器回传的命令行,指示成功与否。取回命令(只有一项:^ef)指示服务器返冋与所给键值相符合的数据(一个请求屮右一个或多个键值)。客户端发送一行命令,包括所有请求的键值;服务器每找到一项内容,都会发送回客户端一行关于这项内容的信息,紧跟着是对应的数据区块;直到服务器以一行"END”回应命令结束。/首先,客户端会发港卫像这样的命令:<
5、bytes>r-是set,add,或者repalce•set意思是“储存此数据”•add意思是“储存此数据,只在服务器*未*保留此键值的数据吋"replace意思是F者存此数据,只在服务器宜曾*保留此键值的数据时"-是接下来的客户端所要求储存的数据的键值-是在取回内容吋,与数据和发送块一同保存服务器丄的任意16位无符号整形(用十进制来书写)。客户端可以用它作为“位域”来存储一些特定的信息;它对服务器是不透明的。-是终止时间。如果为(),该项永不过期(虽然它可能被删除,以便为其他缓存项
6、H腾出位置)。如果非0(Unix时间戳或当前时刻的秒偏移),到达终止时间后,客户端无法再获得这项内容。-是随后的数据区块的字节长度,不包括用于分野的-r-o它可以是0(这吋后面跟随一个空的数据区块)。deleter-是客户端希望服务器删除的内容的键名-是一个单位为秒的吋间(或代表直到某一刻的Unix吋间),在该吋间内服务器会拒绝对于此键名的“add”和“replace”命令。此吋内容被放入delete队列,无法再通过也et"得到该内容,也无法是用“add”和“replac尹命令(但是“
7、set”命令可用)。直到指定时间,这些内容被最终从服务器的内存屮彻底清除。参数是可选的,缺省为0(表示内容会立刻清除,并且随后的存储命令均可用)。此命令有一行回应:■'DELETED'riT表示执行成功?可其他的命令都不能携带IH由数据。在这些命令屮,客户端发送一行命令,然后等待(由命令所决定)一行回应,或最终以一行“END”结束的多行命令。一行命令固定以命令名称开始,接着是以空格隔开的参数(如果有参数的话)。命令名称大小写敏感,并且必须小写。一些客户端发送给服务器的命令会包含一些时限(针对内容或客户端请求的操作)。这时,吋限的具体内容既可
8、以是Unix时间戳(从1970年1月1日开始的秒钟数),或当前时间开始的秒钟数。
此文档下载收益归作者所有