LRU缓存策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LRU缓存策略相关的知识,希望对你有一定的参考价值。

描述:

为最近最少使用(LRU)缓存策略设计一个数据结构,它应该支持以下操作:获取数据(get)和写入数据(set)。

获取数据get(key):如果缓存中存在key,则获取其数据值(通常是正数),否则返回-1。

写入数据set(key, value):如果key还没有在缓存中,则写入其数据值。当缓存达到上限,它应该在写入新数据之前删除最近最少使用的数据用来腾出空闲位置。

第一次提交:编译警告

Solution.java:36: error: cannot find symbol
return map.get(key).val;
^
symbol: variable val
location: class Solution.Node
Solution.java:49: error: cannot find symbol
map.get(key).val = value;
^
symbol: variable val
location: class Solution.Node
2 errors

第二次提交:同上。

第三次提交:class Node 中属性为value,然而class Node 的构造方法中用的却是 this.val = val

第四次提交:Ac

面对这道题时没有思路,主要参考这个帖子 http://blog.csdn.net/zsjmfy/article/details/53404608。

采用双向链表存储结点,结点中包含键值和指向前驱节点和后继结点的引用;map中存储 key 和 结点,通过map.get(key)确定结点位置,所有最近被访问的结点放在链表尾部。

以上是关于LRU缓存策略的主要内容,如果未能解决你的问题,请参考以下文章

具有LRU回收策略的Java缓存

LRU缓存策略

双链表实现LRU缓存淘汰策略

数据结构:缓存淘汰策略

Redis的缓存淘汰策略LRU与LFU

缓存置换策略-LRU算法