分布式缓存系统 memcached 协议

客户端通过tcp/udp协议以文本行的方式与服务器通信。

Memcached提供一组命令,对缓存的数据项的操作以执行一条命令的方式来完成。

 

命令项由以下组成:

一个key

任意字符串,长度可达250个字节。没有空格或换行符的ASCII模式

一个32位的标记值

过期时间

以秒为单位,0表示永不过期。最多30

一个64位的CAS

保持唯一

扫描二维码关注公众号,回复: 332024 查看本文章

任意数据

表示原始数据

CAS是可选的,可以通过-C来禁用。

 

大多数命令支持"noreply"方式。一般情况下,不应该使用这种方式,因为它无法保证错误响应与请求顺序一致。

 

命令

主要包括写入、读取、统计

 

写入命令

set

最常用的一个命令

用于写入数据,也用于更新。如果写入的数据已存在,则进行更新,覆盖之前已存在的数据。

如果写入的是新数据,写入的新数据项在LRU的顶端。

 

add

用于写入数据,但不会更新。如果写入的数据已存在,则不进行更新,将写入失败,写入的新数据项在LRU的顶端。

如果写入的数据已存在,将写入失败,add操作将无论如何把已存在的数据项提升到LRU的前端。

 

replace

用于写入数据,只用于当数据已存在,对数据进行替换更新。这个命令基本不用,提供这个命令主要出于协议完整性。

 

append

追加操作,只用于当数据已存在,在已存在的数据后面追加。

 

prepend

append类似,但是在已存在的数据前面进行追加。

 

cas

这个也是用于写入数据,这个操作保证读到最新数据。保证并发更新的数据一致性。这里“保证读到最新数据”啥意思?你们自己理解吧。

 

读取命令

 

get

用于读取数据,可以传一个或多个key,返回所有存在的数据。

 

gets

用于读取数据,和get不一样,使用CAS。同时返回一个CAS标识。和cas操作一起使用时,如果gets操作返回的CAS标识已经变了,cas操作将不会写入这个数据。

 

delete

用于删除操作,如果该数据已存在,则删除。

 

incr

decr

用于加减操作,适用于64位整数或字符串形式的64位整数。不接受负值。如果操作的数据项的值不存在,则incrdecr操作将失败。

 

 

统计命令

 

stats

 

stats items

 

stats slabs

 

stats sizes
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

flush_all

 

猜你喜欢

转载自lobin.iteye.com/blog/2327403