介绍
LRU 就是 Least Recently Used 的缩写,翻译过来就是“最近最少使用”。也就是说 LRU 算法会将最近最少用的缓存移除,让给最新使用的缓存。而往往最常读取的,也就是读取次数最多的,所以利用好 LRU 算法,我们能够提供对热点数据的缓存效率,能够提高缓存服务的内存使用率。
代码实现
public class LRUCache<K, V> extends LinkedHashMap<K, V> {private int capacity;/*** 传递进来最多能缓存多少数据** @param capacity 缓存大小*/public LRUCache(int capacity) {super(capacity, 0.75f, true);this.capacity = capacity;}/*** 如果map中的数据量大于设定的最大容量,返回true,再新加入对象时删除最老的数据** @param eldest 最老的数据项* @return true则移除最老的数据*/@Overrideprotected boolean removeEldestEntry(Map.Entry<K, V> eldest) {// 当 map中的数据量大于指定的缓存个数的时候,自动移除最老的数据return size() > capacity;}}
参考链接
https://doocs.gitee.io/advanced-java/#/./docs/high-concurrency/redis-expiration-policies-and-lru
