Memcached的过期数据的过期机制及删除机制(LRU)
Memcached的过期数据的过期机制及删除机制
1.当某个值过期后,并没有从内存删除,因此,使用stats命令统计时,curr_item参数有信息(不为0)
2.当某个新值去占用他的位置时,当成空chunk来占用(即取代了原来数据占用内存的位置)
3.当get值时,判断是否过期,如果过期,返回空,并且清空,curr_item就减少
这个过程,只是让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除,这个称为lazy expriation(懒性失效),只有get后,这个数据才会真正从内存删除 ----过期机制
好处:节省了CPU时间和检测的成本
4.如果122Byte的chunk满了,又有新的值要写入,那么:
memcached此处用的LRU删除机制(LRU:最近最少使用【操作系统中的调度算法】) -----删除机制
原理:当某个单元被请求时,维护一个计数器,通过计数器来判断最近谁最少被使用,就把谁踢出去
当执行get、incr、decr命令时,数据存放的内存会被刷成最新访问记录!
即使某个key是设置的永久有效,也一样会被踢出来!