memcached作为高速运行的分布式缓存服务器,具有以下的特点。
协议简单基于libevent的事件处理内置内存存储方式memcached不互相通信的分布式key 表示缓存的索引,必须唯一,否则会覆盖
flags 提供额外的存储信息地方
exptime 是过期时间,如果是0,表示永远生效
bytes 是value的字节长度,一定要设置正确的长度,否则在命令行模式中,会提示错误.
[noreplay] 表示服务端必须回复信息
value 是key对应的值,在命令行中,必须放在第二行
以上就是set命令的使用方法.
add与set方便不同的是,如果add的key已经在memcache中存在,则不提示not_stored,如果add的key不在memcache中,则将其添加到memcache中.
add,类似于增量写入, 这个操作会重置key的生命周期
参数与set一致,差异的地方是,如果key存在于memcache中,则替换这个key,并返回stored,如果key不存在域memcache中,则返回not_stored.
这个操作会重置key的生命周期
用户向key的value后边添加数据,这个key必须存在于memcache中,否则返回not_stored.
如果key原来的值是"hi", 追加的值是"memcache", 那么这个key在追加数据之后变成了"himemcache".
向key的前边追加数据,与append用法一致,只是添加的位置不一样.
与上边的命令相比,唯一不同的是最后多了一个参数:unique_cas_token 这个参数是gets命令的返回结果中,最后一个字段值,
cas是一个比较命令,下边是cas的返回状态码解析:
STORED:保存成功后输出。ERROR:保存出错或语法错误。EXISTS:在最后一次取值后另外一个用户也在更新该数据。NOT_FOUND:Memcached 服务上不存在该键值。当key值被修改后,gets返回的令牌会将会发生变化,当你使用gets命令获取了某个key的令牌环之后,然后你把这个值传入到cas命令的unique_cas_token参数中,cas会去比较你传入的这个令牌环是不是现在key的令牌环,如果没有人再去修改key值,那么这个key的令牌环就不会发生变化,则cas就会修改key的值,如果有另一个人在你使用cas命令之前,修改了key的值,那么key的令牌环就已经变化了,那么你再去使用之前你获取到的令牌环当做cas的参数去修改key的值,则会提示EXISTS,表示你的令牌环已经过去了,key的值将不会被修改.
上边是获取一个key和获取多个key的命令.
返回信息如下:
get world #结果: VALUE world 0 5 value END与get方法使用起来很想,唯一不同的是gets比get多返回一个参数,即令牌环
返回值如下:
gets world #返回值: VALUE world 0 5 11 value END上边的11 便是你获取到的world的令牌环,一旦world被修改,令牌环就发生变化.
删除key的信息
这两个命令,就是对key键的值进行加减
incr key increment_value decr key decrement_valuekey的值必须是numeric,否则不能进行这个操作
上边的命令,就是在key原来只的基础上加上或减去increment_value
用户操作key->value值信息,time是个延时值,以秒为单位.