memcached的LRU删除机制
1)memcached不会自动清空缓存的值
如果add了一个值,但不去get它,那么这个值过期了,它也不会被清空。
解释:memcached不自动检测和清空值,它只当你需要get这个值的时候,才检测这个值是否过期,过期则清空此值,并返回空。
PS:可使用stats命令查询 memcached的curr_items和total_items状态
2)memcached不会自动删除缓存的值
即使一个值过期了,memcached也不会删除它,只了清空了它的值,状态改为已过期。
真正删除值:只有当memcached内存满了,有新值需要占用空间,才会的把过期的值删除,存入新的值。
3)删除规则
刚刚说不自动删除值,只有当存入新的值,才会删除过期的值,那么删除哪一个过期值呢??
FIFO删除机制
这是其他应用删除机制,队列的删除机制,first in first out,先进先出,删除最先来的那个值
memcached的LRU删除机制
memcached的删除机制是LRU删除机制,它并不是删除最新存的那个值,而是删除最少使用的那个值。
PS1:当get key的时候,此key的新鲜度更新为最新鲜,并不是新鲜度+1
PS2:这种LRU删除机制并不是只删除过期的值,如果memcached内存满了,即使最近的那个值还没过期,也会被踢除(永久数据被踢除现象)