您的位置:首页 > 数据库 > Memcache

memcache 的过期数据删除机制

2016-01-30 16:38 447 查看

memcache 的过期数据删除机制

       1.stats 命令可以查看memcache 的当前状态,一共存过多少记录   total_item,以及当前有效的记录 curr_items,当有些记录失效的时候,会发现 curr_items并没有减少,而

在下一次get这条记录的时候,curr_items 会减少,这说明某个值过期的时候,.如果之前没有 get过,他并没有真正的从内存删除。当取某个值的时候,判断是否过期,如果过期,

返回空,并清空chunk, 因此,stats统计时,curr_item 有其信息。

      2.当设置某个新值时,slab中没有多余chunk的时候,即某个新值去占用她的位置的时候,会把这个chunk当成空chunk来占用。

    

     即这里的过期,只是让用户看不见数据而已,并没有在过期的时候真正的删除这条记录。这个成为 lazy expiration,惰性失效

    Memcached,此处使用的就是LRU(least  Recently Used)最近最少用,删除机制。

   原理:当某个单元被请求时,维护一个计数器,通过计数器来判断最近谁最少使用,就把谁踢出去。 注:即使是永久数据也会被踢  即永久数据被踢现象

  好处:节省了cpu的时间,和检测的成本,cpu没有必要没秒来检查数据是否过期。

                              例如: 有三个内存单元         1.  set   a   b    c                 2.  get   a  c        3. set  e     4.get c   a   5.set   f  

                           在memcache内存中的变化其中下标越小表示数据越新

                                                     1. a[0]  b [0]  c [0]              2.a[0]  b[1] c[0]       3.a[1],e[0],c[1]    不管b是否超时 都会被  踢          4 a[0],e[1],c[0]            5.a[1] ,f[0],c[1]  e 被踢

   3.memcache的key最大长度为255个字节(二进制支持65535字节)

  value支持的最大长度为 1M,一般都是存储一些文本,如新闻列表。   内存的限制32位 最大支持2G       如果换成30G数据要缓存,一般也不会单实例安装30G

  建议开启多个实例,可以使用同一机器的不同端口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息