客户端通过tcp/udp协议以文本行的方式与服务器通信。
Memcached提供一组命令,对缓存的数据项的操作以执行一条命令的方式来完成。
命令项由以下组成:
一个key
任意字符串,长度可达250个字节。没有空格或换行符的ASCII模式
一个32位的标记值
过期时间
以秒为单位,0表示永不过期。最多30天
一个64位的CAS值
保持唯一
任意数据
表示原始数据
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位整数。不接受负值。如果操作的数据项的值不存在,则incr,decr操作将失败。
统计命令
stats
stats items
stats slabs
stats sizes
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
flush_all