LRU算法——缓存算法

LRU(最近最久未用算法)

LRU算法主要用于缓存算法,在节省资源的情况下提高数据访问效率
筛选热点数据:对不断访问的数据进行筛选淘汰,剩下的数据就为热点数据;相对而言,释放最近未被访问数据占用的空间也是采用LRU算法。

1 LRU的实现——链表

使用一个链表保存缓存数据
(1)新数据插入到链表头部;
(2)每当缓存命中(即缓存数据被访问),则将数据移到链表头部;
(3)当链表满的时候,将链表尾部的数据丢弃。
在这里插入图片描述

链表实现的优缺点:

  • 当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。
  • 命中时需要遍历链表,找到命中的数据块索引,然后需要将数据移到头部。
2 LRU的实现——哈希链表

在这里插入图片描述
当一个位置被命中之后,就将该位置调整到链表头的位置,新加入的数据也直接加到链表头中。这样,在多次进行Cache操作后,最近被命中的,就会被向链表头方向移动,而没有命中的,就向链表后面移动,链表尾则表示最近最少使用的数据。当需要替换内容时候,链表的最后位置就是最少被命中的位置,我们只需要淘汰链表最后的部分即可。

使用哈希链表的好处就是在命中数据时,无序遍历链表。

参考博客:https://blog.csdn.net/leo_weile/article/details/90142697

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值