LRU是什么?
RUL是一种缓存淘汰算法,是一种缓存淘汰机制
缓存
缓存分为两种
:硬件的缓存和软件的缓存
-
硬件的缓存也是CPU缓存,是位于CPU和内存之间的临时的存储器,包括一级缓存,二级缓存,三级缓存
-
软件的缓存包括内存缓存,数据库缓存和**网络缓存(浏览器缓存)**等等
缓存淘汰机制
大家都知道,缓存不是无限的资源,甚至是稀缺的。那么当缓存被用满的时候,就需要淘汰掉一些不要的数据,以什么样的方法判断淘汰哪些数据就是缓存淘汰机制
常见的缓存淘汰机制有:
- 先进先出策略 FIFO(First In,First Out)
- 最少使用策略 LFU(Least Frequently Used)
- 最近最少使用策略 LRU(Least Recently Used)
这个其实很好理解,比方说微信或者qq聊天记录很文件,对你来说最常用的就是最近最常使用的文件和聊天记录,那么最不重要的就是最近最少使用的文件和聊天记录
所以LRU是最常用的缓存淘汰算法
LRU的原理
其实非常简单,拿链表来实现的话就是:
-
当用户在访问一个数据的时候,首先进行链表的遍历;遍历到相应的数据的结点的时候,将其从原来的位置删除,然后再插入到链表的头部。
-
如果没有之前没有缓存的数据,则直接将结点插在数据头部
-
如果缓存满了,插入多少数据就从尾部开始删除