memcache memory release

1、flush_all命令只是将记录置为过期,并不会释放内存空间

(This command does not pause the server, as it returns immediately. It does not free up or flush memory at all, it just causes all items to expire.) 
2、memcache没有监视记录过期然后释放内存空间的轮询线程 
3、memcache数据过期有以下2种 
      ①Lazy Expiration 

memcached内部不会监视记录是否过期,而是在get时查看记录的时间戳,检查记录是否过期。这种技术被称为lazy(惰性)expiration。因此,memcached不会在过期监视上耗费CPU时间。 

      ②LRU 

         memcached会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。

         当memcached的内存空间不足时(无法从slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。 

引出以下2个问题:

1.LazyExpiration会触发是否内存空间吗,即在get key时,发现key已过期,memcache会释放该key的内存空间(会)

    可通过以下方法验证:  

     ① set key1 0 30 10 aaaaaaaaaa

     ②  stats 查看bytes数据

     ③   30秒后,stats查看bytes数据,同②

     ④ get key1  

     ⑤ stats查看bytes数据,发现较②减少

2.LRU,空间不足时,memcached会优先释放已过期key占据的空间(是否有检查过期key机制?如有如何实现),如无过期数据采用LRU策略


一、存储命令

存储命令的格式:

1
2
<command name> <key> <flags> <exptime> <bytes>
<data block>

参数说明如下:

<command name> set/add/replace
<key> 查找关键字
<flags> 客户机使用它存储关于键值对的额外信息
<exptime> 该数据的存活时间,0表示永远,单位秒
<bytes> 存储字节数
<data block> 存储的数据块(可直接理解为key-value结构中的value)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值