Memcached 不会释放已分配的内存(这个跟Memcached实现的内存存储机制有关,可以查看Memached内存存储机制文章)。记录超时后,客户端就无法再看见该记录(invisible,透明),其存储空间即可重复使用。
Memcached 会优先使用已超时的记录的空间,但即使如此,也会发生追加新记录时空间不足的情况,此时就要使用名为 Least Recently Used(LRU)机制来分配空间。顾名思义,这是删除“最近最少使用”的记录的机制。因此,当 Memcached 的内存空间不足时(无法从 slab class 获取到新的空间时),就从最近未被使用的记录中搜索,并将其空间分配给新的记录。
也就是在Memcached中,已经实现了LRU调度算法,在用户看来,只需要调用memcached插入接口将数据插入,而不用考虑memcached内存不足的问题。