20行Python代码帮你搞懂LRU算法,面试很简单

LRU算法在后端工程师面试中,是一个比较常出现的题目,这篇文章带大家一起,理解LRU算法,并最终用Python轻松实现一个基于LRU算法的缓存。

缓存是什么

先看一张图,当我们访问网页,浏览器会给服务器发请求,服务器会经过一系列的运算,把页面返回给浏览器。

当有多个浏览器同时访问的时候,就会在短时间内发起多个请求,而服务器对每一个请求都要进行一系列相同的操作。重复工作不仅浪费资源,还可能导致响应速度变慢。

LRU是什么

LRU的淘汰逻辑

我们用一张图来描述LRU的淘汰逻辑,图中的缓存是一个列表结构,上面是头结点下面是尾节点,缓存容量为8(8个小格子):

有新数据(意味着数据之前没有被缓存过)时,加入到列表头

缓存到达最大容量时,需要淘汰数据多出来的数据,此时淘汰列表尾部的数据

当缓存中有数据被命中,则将数据移动到列表头部(相当于新加入缓存)

按上面的逻辑我们可以看到,一个数据如果经常被访问就会不断地被移动到列表头部,不会被淘汰出缓存,而越不经常访问的数据,越容易被挤出缓存。

20行Python代码实践LRU

下次面试在遇到LRU的题目,是不是就胸有成竹了?


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LRU算法在后端工程师面试中,是一个比较常出现的题目,这篇文章带大家一起,理解LRU算法,并最终用Python轻松...
    ToEnd阅读 339评论 0 2
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,010评论 3 119
  • 当我们处于一个特定的环境中时,也许我们自己也不会清楚自己会是一个什么样子,只有我们设身处地得进入到环境中时...
    招远金都刘楠楠阅读 69评论 0 0
  • 是否一生中总认为一辈子太长,时间太慢,其实不然,度过了繁华的青春才笑叹过去,珍惜现在,珍惜时间,笑叹!笑叹!
    雪雾草阅读 191评论 0 0
  • 月牙儿很是清丽,它把李太白的诗句,高高地挂了起来。一句一句连成了串,串起了我的孤独。 携一缕花香,舞一缕月光,在没...
    溪流娟娟阅读 186评论 0 0