ProDeveloperTutorial.com

教程和编程解决方案
菜单
  • Shell脚本
  • 系统设计
  • Linux系统编程
  • 4g LTE
  • 编码问题
  • C
  • C ++
  • DSA
  • GIT

系统设计主题6:LRU缓存

前开发者教程 二月15,2019

在本主题中,我们将了解LRU缓存及其在系统设计中的重要性。

LRU用于驱逐高速缓存。高速缓存逐出是一个过程,在该过程中,存储的高速缓存将在达到特定限制时被释放。有许多用于驱逐缓存的算法,例如LRU–最近最少使用的FIFO–先进先出,后进先出–TLRU后进先出–时间感知最近最少使用。在那些LRU中,更常用的一种。

在逐出缓存期间,要删除的项目非常重要。您不能删除最近使用的项目,也不能删除经常使用的最常用的项目。

LRU代表“最近最少使用”。该策略规定,如果在删除缓存时达到缓存限制,则会删除使用最少的项目。

如何执行呢?

LRU由双链表(DLL)和哈希表实现。

系统设计教程

因此,在我们的示例中,HashMap中有6个DLL节点和6个值。 DLL用于存储缓存值。每当有新的缓存时,它将存储在前面,这样最少使用的将存储在后面。

在插入一个新值时,我们将首先检查DLL,如果有一个与新值匹配的值,那么我们将在开始时移动该节点。否则,新值将插入到开头。

但是为什么我们需要HashMap?

为了在DLL中搜索值,将花费O(n)时间。因此,为了减少时间复杂度,我们使用HashMap。因此,通过使用HashMap,我们可以在恒定时间O(1)中进行搜索。

因此,当缓存已满时,我们将删除DLL的最后一个节点,并将新项移动到链表的开头。

 

该网站上可用的教程列表:

C编程20+章C ++编程80+章
100多个编码问题数据结构和算法85+章
系统设计20+章Shell脚本编写12章
4g LTE 60+章节最常见的编码问题
5G NR 50+章Linux系统编程20+章
分享
电子邮件
鸣叫
领英
Reddit
绊倒
Pinterest的
上一篇文章
下一篇

关于作者

前开发者教程

每天我们都会讨论竞争性编程问题,请加入我们的网站:   电报频道

ProDeveloperTutorial.com

教程和编程解决方案
版权© 2020 ProDeveloperTutorial.com
从以下课程获得热门课程: 教育性的






    <bdo id="IfEUtQ7"></bdo>

    <menu id="uJY3V6j"><progress id="kn3kLto"></progress></menu>