LRU 是什么?


程序员的公众号:源1024,获取更多资料,无加密无套路!

最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等
获取方式: 关注公众号并回复 666 领取,更多内容持续奉上


LRU(Least Recently Used):最近最少使用策略,是一种缓存淘汰机制。

基本思想:当缓存空间已满时,优先淘汰最近最少使用的缓存数据,以腾出更多的缓存空间。

算法规则

1、新数据插入到链表头部;

2、当缓存命中(即缓存数据被访问),数据要移到表头;

3、当链表满的时候,将链表尾部的数据丢弃。

LRU 是什么?_第1张图片

实现原理:

LRU算法的实现可以采用多种数据结构,其中最常见的是使用一个双向链表和一个哈希表。

双向链表用于维护缓存数据的访问顺序,哈希表用于快速查找缓存数据。当新的数据被访问时,先在哈希表中查找该数据是否已经存在于缓存中,如果存在,则将该数据移动到双向链表的头部,表示该数据是最近访问的数据;如果不存在,则需要将该数据添加到缓存中,并将其添加到双向链表的头部。当缓存空间已满时,需要淘汰双向链表中最后一个节点,同时在哈希表中删除对应的缓存数据。

应用场景:

       网站页面缓存、图片缓存、数据结构缓存、数据库缓存

 

 系列文章索引

MyBatis的插件能在哪些地方进行拦截?

了解MyBatis的缓存机制吗

面试官:谈谈对volatile的理解

Spring中用到了哪些设计模式

面试官:说一下SQL的执行过程

线程池的工作原理


 

你可能感兴趣的:(LRU,缓存)