LRU缓存算法

为什么要有LRU缓存算法

我们用缓存来存放以前读取的数据,而不是直接丢掉,这样,再次读取的时候,可以直接在缓存里面取,而不用再重新查找一遍,这样系统的反应能力会有很大提高。但是,当我们读取的个数特别大的时候,我们不可能把所有已经读取的数据都放在缓存里,毕竟内存大小是一定的,我们一般把最近常读取的放在缓存里。现在,我们就来研究这样一种缓存机制——LRU缓存。

LRU缓存:

LRU缓存利用了这样的一种思想。LRU是Least Recently Used 的缩写,翻译过来就是“最近最少使用”,也就是说,LRU缓存把最近最少使用的数据移除,让给最新读取的数据。而往往最常读取的,也是读取次数最多的,所以,利用LRU缓存,我们能够提高系统的性能.

LRU缓存策略实现原理 
1、使用双向链表记录数据的被使用的时间 
因为我们要删除最久没有被访问的数据,为了保证效率,我们在缓存中维护一个双向链表,该链表将缓存中的数据按照访问时间从新到旧排列起来。 
当我们需要访问一个数据的时候,如果缓存中已经缓存了这个数据,那么我们就将该数据从缓存的双向链表中摘除,然后再重新放入到双向链表的表头。 
如果缓存中没有我们需要的数据,那么我们可以在外部获得数据,然后将数据放入到缓存中,此过程中会将新数据插入到双向链表的表头。

2、使用hash表保证缓存中数据的访问速度 
因为链表进行查找是O(n),比较慢。因此为了提高效率,我们除了将数据维护在一个双向链表中,同时还将数据维护在一个hash表中,这时我们访问的效率就变成了O(1)。

LRU缓存策略的两个方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值