做实验
为什么呢?
Memcached的过期删除机制
1.当某个值过期后,并没有内存删除,因此stats统计时curr_item有其信息。
2.当取值时,判断是否过期,如果过期,返回空,并且清空,curr_item就减少了。
3.如果之前没有get过,将不会自动删除,当某个新值去占用他的位置时,当成空chunk来占用。
这个过期只是不让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除,这个称为lazy expiration 惰性失效机制。
好处:减少了CPU时间和检测的成本。
如果以122bytes的chunk大小举例,122的chunk都满了,又有新的值(长度为120)要加入,要挤掉谁?
Memcached此处用的LRU删除机制(操作系统的内存管理,常用FIFO.LRU删除)
LRU:least Recenly Used 最近最少使用
FIFO:first in first out 先进先出
原理:当某个单元被请求时,维护一个计数器,通过计数器来判断最近最少被使用。就把谁踢出。
注:即使某个key是设置的永久有效期,也一样会被踢出来!这就是--老数据被踢现象。