1、基本
通信方式: Memcached客户端通过TCP连接与服务器通信,UDP接口也可以使用,一个运行中的Memcached服务器在某个(可配置的)端口上监听连接;客户端连接该端口,发送命令给服务器,读取反馈,最后关闭连接。
数据类型: Memcache协议中有两种类型的数据:文本行和非结构化数据,文本行用来发送从客户端到服务器的命令以及从服务器回送的反馈信息,非结构化的数据用在客户端希望存储或者读取数据时。
2、关键字
定义: memcached使用关键字来区分存储不同的数据,关键字是一个字符串,可以唯一标识一条数据。
限制: 当前关键字的长度限制是250个字符,关键字一定不能包含控制字符和空格。
3、命令
存储命令: 包括set、add和replace,要求服务器安装关键字存储数据。
读取命令: 只有get命令,要求服务器根据一组关键字读取数据。
其他命令: 如flush_all,version等,不使用非结构化的数据。
4、超时时间
定义: 一些发送到服务器的命令包含超时时间,对应于数据项保存时间或客户端操作限时。
格式: 超时时间可以是UNIX时间戳,或者是从当前时间开始算起的秒数。
5、错误信息
类型: 包括“ERROR\r
”、“CLIENT_ERROR <error>\r
”和“SERVER_ERROR <error>\r
”。
6、存储命令详解
格式: <command name> <key> <flags> <exptime> <bytes>"r"n <data block>"r"n。
参数解释: <command name> 是 set、add或者replace;<key> 是客户端要求服务器存储数据的关键字;<flags> 是一个16位的无符号整数;<exptime> 是超时时间;<bytes> 是随后数据的字节数;<data block> 是真正要存储的数据流。
7、取回命令详解
格式: get <key>*\r
参数解释: <key>* 表示一个或多个键值,由空格隔开的字串。
8、删除命令
格式: delete <key> <time>\r
参数解释: <key> 是客户端希望服务器删除的内容的键名;<time> 是一个单位为秒的时间(或代表直到某一刻的Unix时间),在该时间内服务器会拒绝对于此键名的操作。
9、多用途统计
格式: stats <arguments>\r
参数解释: <arguments> 是任意字符串,用于指定需要获取的统计信息。
10、其他命令
格式: <command>\r
参数解释: <command> 是其他可用的命令,如version、quit等。
以下是关于Memcache协议的两个常见问题及解答:
1、问题一:Memcache协议中的文本行和非结构化数据有什么区别?
答案:文本行用来发送从客户端到服务器的命令以及从服务器回送的反馈信息,而非结构化的数据用在客户端希望存储或者读取数据时,服务器会以字符流的形式严格准确的返回相应数据在存储时存储的数据。
2、问题二:Memcache协议中的关键字有什么限制?
答案:关键字是一个字符串,可以唯一标识一条数据,长度限制是250个字符,且关键字一定不能包含控制字符和空格。
仅供参考,如需更多信息,建议查阅memcached官方文档或相关技术社区。