LRU (Least Recently Used):这个名字有问题!!!它表达的含义应该是将最近未使用的淘汰掉,和’Least’(最少)没有任何关系。实现:用一个链表记录每个数据,使用到了哪个数据就将哪个数据放在链表的最前面,淘汰内存时将末尾的直接删除,和使用次数无关。
LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。这个实现需要将设置一个比例,关于时间和使用次数的比例需要经过不断的优化,可以参考Redis的实现方案.
FIFO (Fist in first out) 先进先出, 如果一个数据最先进入缓存中,则应该最早淘汰掉,也就是淘汰最老的。