增加: add 往内存增加一条数据
命令格式:
add key flag expiretime bytes\r\n
data\r\n //跨行所加的一些数据
1)key: 给这个值起一个固定的名字
//学过计算机基础和学过计算机数据库结构的人知道,计算机有个比较常用的结构叫hash,这是数据结构中最重要的数据结构。key和value就是通过hash,hash有一个自己独造的函数,通过key计算某个固定的值,将value存到这个key计算的固定的值里面,当我们通过get取得时候,通过key我们就可以很快的再内存中找到我们当时存的key所对应的value的值,所以速度非常快
2)flag: 标志 是一个整数
3)expire 有效期
//过期时间
4)length 添加的缓存的长度
flag的意义
memcache 基于简单的文本协议,传输的东西,理解成字符串来存储
array() object()
有经验的同学会将array() object() 转成json_encode()这个字符串,存到 memcached里边。那怎么来区分当时是存的是字符串还是array()或object()呢?这就是flag的意义。
例子:
add title 1 0 16
welcome to maizi
Stored
示例:
如下我们增加一个web 过期的标志是0,过期的时间是10秒,长度是5
可以发现,过了时间就没有了
expire 有效期
设置缓存的有效期有三个方式
1)设置它的秒数,从当前的时间算起,到第n秒失效。比如失效时间是10秒,就是从当前的时间算,过来10秒你再去get这个web的时候,它是没有的。
2)使用时间戳的方式,就是指定明天某个时候失效,这个场景主要运用于抢购,如抢购手机,希望明天的这个时候缓存失效。
这个是当前unix下的时间戳
让它在当前时间戳的99秒后失效
3)将expire设置为0,设置为0后就不自动失效,有的人以为这个是一个永久数据,这种理解是错误的。这里说一种极端的方式,比如memcache挂了,再重启memcache服务,但这里面的数据就都不会存在了。我们在编译memcache的时候,使用了一个最长的常量,默认时间为30天,所以即使你设置为0,30天以后,它的数据也会失效。还有一种情况是可能我等不到这30天,就会被新的数据挤出去,这个就是老数据被踢的这个现象。
这里将expire设置为0,30后会自动失效,如果不失效也会被其他数据挤掉。