三种缓存淘汰策略

1, FIFO

先进先出,底层是利用双向链表,新来的数据放到链表的尾部,如果链表塞满了就删除头部的。

2, LFU

最近最少使用算法。思路就是如果一个数据在最近一段时间内使用次数最少,那么将来一段时间使用的可能性也很少。

LFU 是基于访问次数的。

实现:两个HASHMAP, 一个是用来存储数据的, key-value. 一个是用来存储次数的, key-time. 

当访问一个key 的时候就在 key-time, 也就是的第二个hashmap 对应的time 加1.

删除的时候就寻找最少time 的那个。

3, LRU

least recently used

如果数据最近被访问过,那么将来访问的几率也很高。

实现:新增加的数据放到头部。每当缓存命中,就把数据放到尾部。删除的时候就删除尾部的数据

猜你喜欢

转载自www.cnblogs.com/vincentgwzhang/p/10336180.html