0%

memcached过期删除

memcached过期删除

  • Lazy Expiration(延迟过期)

    Memcached不会监控记录是否过期,而是在外部来获取数据的时候,才检查记录的时间戳,因此称为Lazy Expiration。

  • LRU(Least Recently Used 最近最少使用)

    当空间不足的时候,Memcached会优先使用已经过期的数据空间,如果还不够,那么就会把最近最少使用的对象的空间释放出来使用。

  • 懒惰删除机制

    删除item对象时,不释放内存,作删除标记,指针放入slot回收插槽,下次分配的时候直接使用

当某个值过期后,并没有从内存删除,因此,stats 统计时,curr_item 有其信息,当某个新值去占用他的位置时,当成空 chunk 来占用,当 get 值时,判断是否过期,如果过期,返回空并且清空,curr_item 就减少了.

这个过期,只是让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除,这个称为 lazy expiration,惰性失效,这样做的好处是节省了 cpu 时间和检测的成本

删除机制

memcached使用的是lru(least recently used 最近最少使用)删除机制

原理

当某个单元被请求时,维护一个计数器,通过计数器来判断最近谁最少被使用,就把谁踢出

即使某个 key 是设置的永久有效期,也一样会被踢出来,称为永久数据被踢现象