MemCached add命令的用法详解

来源:互联网 发布:知乎注册不了为什么 编辑:程序博客网 时间:2024/06/08 08:46

  增加: add 往内存增加一条数据

  命令格式:

add key flag expiretime bytes\r\n

data\r\n //跨行所加的一些数据

1key:给这个值起一个固定的名字

//学过计算机基础和学过计算机数据库结构的人知道,计算机有个比较常用的结构叫hash,这是数据结构中最重要的数据结构。keyvalue就是通过hashhash有一个自己独造的函数,通过key计算某个固定的值,将value存到这个key计算的固定的值里面,当我们通过get取得时候,通过key我们就可以很快的再内存中找到我们当时存的key所对应的value的值,所以速度非常快

2flag:标志 是一个整数

3expire有效期

//过期时间

4length添加的缓存的长度

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设置为030后会自动失效,如果不失效也会被其他数据挤掉。


 



原文链接:http://www.maiziedu.com/wiki/memcache/add/

 

0 0
原创粉丝点击