MemCached add命令的用法详解

  增加: 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/

 

posted @ 2016-10-17 18:52  小麦麦子  阅读(376)  评论(0编辑  收藏  举报