您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
memcached-LRU删除机制
发布时间:2017-11-22 17:31:35编辑:雪饮阅读()
memcached过期数据删除机制:
当某个key过期后,并没有从内存删除,因此stats统计时,curr_item有其信息
当get时判断是否过期,如果过期,返回空,并且清空,此时curr_item才真正减少
那么如果没有get则不会自动删除,如果此时通过某个新值来替换该key的值,则会将该key做为一个空的chunk来占用,此时该key又会重新生效,只是值变了。
这种机制被称为lazy expiration惰性失效。好处是节省cpu时间和检测的成本。
如果chunk都满了,则add的数据来了时就会剔除旧的数据。
memcached此处用的LRU删除机制。
操作系统的内存管理,常用FIFO,LRU删除
LRU: Least Recently Used 最近最少使用
FIFO:first in,first out先来的先走
LRU算法:
每个key在建立时就有一个属于自己的计数器,当对memcached的key进行操作时会影响到所有key的计数器,例如,add和get命令会将目标key的计数器归零,而非目标计数器则自增一次,如果出现了chunk满了的时候就需要剔除某些key了,此时会将计数器最大的key剔除,即便该key设置的 是永久有效。
命令:incr key(key名) 1(数字)
命令:decr key(key名) 1(数字)
上面这两个命令都是把值理解为32位无符号来操作的,值在0-2^32-1范围内
如decr可以防止库存变成负数。
关键字词:memcached,lru