/**
* 手寫LRU算法
*
* @author liyue
* @date 2020-03-04 00:32
*/
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
private final int CACHE_SIZE = 100;
// cacheSize 這裏表示傳遞進來最多能緩存多少個數據
public LRUCache(int cacheSize) {
// 這塊就是設置一個hashmap的初始大小,同時最後一個true指的是讓linkedHashMap按照訪問的順序進行排序,最近訪問的放在頭,最老訪問的就在尾部。
super((int) Math.ceil(cacheSize / 0.75) + 1, 0.75f, true);
}
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
//這個意思就是說,當數據量大於指定的緩存個數的時候,就自動刪除最老的數據
return size() > CACHE_SIZE;
}
}
Redis中的內存淘汰算法裏面有LRU算法。如: allkeys-lru: 當內存不足以容乃新寫入的數據是,在鍵空間,移除最近最少使用key。
我這裏的LRU算法是石衫老師提供的。