测试小生 Li_Hugo
微博:http://weibo.com/lz2012bj
memcached命令
上一篇 /
下一篇 2013-11-19 11:11:06
/ 个人分类:linux命令
memcached命令标准协议No Reply存储命令set命令add命令replace命令append命令prepend命令cas命令读取命令get命令gets命令删除命令incr/decr命令查看memcached使用状态stats命令stats items命令stats slabs命令stats sizes命令flush_all命令全部协议在Protocol Documentation中标准协议memcached所有的标准协议包含在对item执行命令过程中,一个item包含:一个key一个32位的标志值以秒为单位的失效时间一个64为的CAS值,这个是唯一的数据CAS是可选的,可以使用“-C”禁止CAS。No Reply大多数ascii命令允许“noreply”。建议大家在ascii协议下别用“noreply”,因为那样不会报请求错误。“noreply”的目的是在执行交互命令(如:set、add)后,避免等待返回的包。二进制协议将“noreply”定义为声明。如果你的客户端支持或者使用二进制协议,那么你将会用到它。存储命令首先客户端向服务器按照如下格式发送命令行:<command name> <key> <flags> <exptime> <bytes>\r\n a) <command name> 可以是"set", "add", "replace"。 "set"表示按照相应的<key>存储该数据。 "add"表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。 "replace"表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败 b) <key> 客户端需要保存数据的key。 c) <flags> 是一个16位的无符号的整数(以十进制的方式表示)。该标志将和需要存储的数据一起存储,并在客户端get数据时返回。客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。 d) <exptime> 过期的时间。如果该数值为0表示存储的数据永远不过时(但是,该数据有可能被其他项所替换掉。因为服务器采用了LRU(最近最久没有使用)的算法替换)。如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。 e) <bytes> 需要存储的字节数(不包含最后的"\r\n"),当用户希望存储空数据时,<bytes>可以为0 f) 最后客户端需要加上"\r\n"作为"命令头"的结束标志。<data block>\r\n 紧接着"命令头"结束之后就要发送数据块(即希望存储的数据内容),最后加上"\r\n"作为此次通讯的结束。reply 当以上数据发送结束之后,服务器将返回一个应答。可能有如下的情况: a) "STORED\r\n" 表示存储成功 b) "NOT_STORED\r\n" 表示存储失败,但是该失败不是由于错误。通常这是由于"add"或者"replace"命令本身的要求所引起的,或者该项在删除队列之中(见delete命令)。setset是保存数据命令。会覆盖已存在的数据,而新数据将在LRU顶端add只有在该数据不存在时才保存该数据。如果是新加入的item,那么将其直接放在LRU顶端;如果item已经存在导致add失败,那么将这个item从LRU链表上摘下再放到LRU顶端。replace替换已经存在的数据。 这个操作几乎用不到。append紧接着已经存在的item增加item。这个操作不允许增加原来的item限制,对管理链表很有用。prepend与append命令类似,这个命令是在已存在的数据前加入新数据。cas检查并存储(Check And Set)或者比较并更新(Compare And Swap)。如果从上次读取到现在没有更新,那么存入数据,处理更新竞争很有用。读取命令获取数据的格式: get <key>*\r\n
收藏
举报
TAG: