前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)分析

缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)分析

作者头像
jack.yang
发布于 2025-04-05 07:32:51
发布于 2025-04-05 07:32:51
1680
举报

缓存算法是指令序列,用于决定缓存系统中哪些数据应该被删去。

常见类型包括LFU、LRU、ARC、FIFO、MRU。

一、最不经常使用算法(Least Frequently Used-LFU):

它是基于“如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小”的思路实现的。这个缓存算法一般实现内部都会使用一个计数器来记录条目被访问的频率,然后依据计数器访问数值比较,把最小的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。

二、最近最少使用算法(Least Recently used -LRU):

这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置。当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存达到极限时,较早之前访问的条目将从缓存底部开始被移除

三、自适应缓存替换算法(Adaptive Replacement Cache-ARC)

在IBM Almaden研究中心开发,这个缓存算法同时跟踪记录LFU和LRU,以及驱逐缓存条目,来获得可用缓存的最佳使用。

四、先进先出算法(First In First Out-FIFO):

FIFO是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。

五、最近最常使用算法(MRU):

这个缓存算法最先移除最近最常使用的条目。一个MRU算法擅长处理一个条目越久,越容易被访问的情况。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-07-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。 常见类型包括LFU、LRU、ARC、FIFO、MRU。 最不经常使用算法(LFU): 这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。 最近最少使用算法(LRU): 这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置。当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存达到极限时,
Java技术栈
2018/03/30
4.8K0
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
什么是缓存置换算法?
前面的文章已经介绍了什么是操作系统的虚拟内存,与本文要介绍的缓存置换算法息息相关,如果还没有看的朋友,建议先读一下上篇文章,链接是:什么是操作系统的虚拟内存?
我是攻城师
2019/07/19
1.8K0
如何动手撸一个简单的LFU缓存
关于第一种FIFO策略的实现,比较简单,可采用固定长度的数组和链表来处理,这里就不重点说了。今天我们的重点是LFU缓存的实现。
我是攻城师
2019/07/30
1.2K0
昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现
第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用。
万猫学社
2022/04/22
3300
缓存淘汰/读写/存在问题总结
实现思路也是很简单的, 套用消息队列思路, 每次新生成缓存标记放到队列尾部, 优先淘汰队列头部的数据.
用户2825413
2020/03/23
6710
字节二面,让写一个LFU缓存策略算法 !
LRU全称 "Least Recently Used",最近最少使用策略,判断最近被使用的时间,距离目前最远的数据优先被淘汰,作为一种根据访问时间来更改链表顺序从而实现缓存淘汰的算法,它是redis采用的淘汰算法之一。redis还有一个缓存策略叫做LFU, 那么LFU是什么呢?
程序员小猿
2021/03/24
7390
字节二面,让写一个LFU缓存策略算法 !
分布式系统架构7:本地缓存
我们在开发时,用到缓存的情况,无非就是为了减少客户端对相同资源的重复请求,降低服务器的负载压力。引入缓存后,既有好处也有坏处
卷福同学
2025/01/15
1140
通俗讲解:缓存、缓存算法和缓存框架
1 引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓存框架。在这篇文章,我们会去讨论缓存,缓存算法,缓存框架以及哪个缓存框架会更好。 2 面试 “缓存就是存贮数据(使用频繁的数据)的临时地方,因为取原始数据的代价太大了,所以我可以取得快一些。” 这就是 programmer one (programmer one 是一个面试者)在面试中的回答(一个月前,他向公司提交了简历,想要应聘要求在缓存,
前朝楚水
2018/04/03
1.3K0
通俗讲解:缓存、缓存算法和缓存框架
常用的淘汰算法
FIFO 算法是一种比较容易实现的算法。它的思想:是基于队列的先进先出原则,最先进入的数据会被最先淘汰掉。这是最简单、最公平的一种思想。
凯哥Java
2022/12/16
1.1K0
常用的淘汰算法
如何动手撸一个LRU缓存
上篇文章介绍了,如何动手实现一个LFU缓存,今天我们来学习下如何动手实现一个LRU缓存,在这之前,我们还是先回顾下关于缓存置换算法的三种策略:
我是攻城师
2019/07/31
6400
如何动手撸一个LRU缓存
【愚公系列】软考高级-架构设计师 007-存储技术(Cache)
Cache(发音为“cash”)是一种高速数据存储层,存在于计算机的存储器层次结构中,它的作用是暂时存储近期被访问的数据和指令,以便于快速访问。由于Cache的访问速度远高于主存储器(如RAM)和辅助存储设备(如硬盘或SSD),利用Cache可以显著减少数据访问的平均时间,从而提高计算机系统的整体性能。
愚公搬代码
2024/05/11
1850
什么是DevSecOps、缓存驱逐策略、减少延迟的策略
LRU 驱逐策略首先删除最近访问最少的项目。此方法基于以下原则:最近访问的项目更有可能在不久的将来再次访问。
BUG弄潮儿
2025/03/03
1050
什么是DevSecOps、缓存驱逐策略、减少延迟的策略
缓存算法(页面置换算法)-FIFO、LFU、LRU
  FIFO(First in First out),先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢?因为这个原则简单、且符合人们的惯性思维,具备公平性,并且实现起来简单,直接使用数据结构中的队列即可实现。
哲洛不闹
2019/06/05
3K0
Redis缓存淘汰策略
在使用Redis时,我们一般会为Redis的缓存空间设置一个大小,不会让数据无限制的放入Redis缓存。
睡魔的谎言
2020/11/12
1.9K0
动手实现一个localcache - 设计篇
哈喽,大家好,我是asong。最近想动手写一个localcache练练手,工作这么久了,也看过很多同事实现的本地缓存,都各有所长,自己平时也在思考如何实现一个高性能的本地缓存,接下来我将基于自己的理解实现一版本地缓存,欢迎各位大佬们提出宝贵意见,我会根据意见不断完善的。
Golang梦工厂
2022/07/11
3750
动手实现一个localcache - 设计篇
动手实现 LRU 算法,以及 Caffeine 和 Redis 中的缓存淘汰策略
那天我在 LeetCode 上刷到一道 LRU 缓存机制的问题,第 146 题,难度为中等,题目如下。
古时的风筝
2020/07/16
8270
cache 淘汰算法:LIRS 算法
本文介绍了LIRS算法在缓存替换策略上的优化研究和实现。通过将缓存替换策略与页面访问模式进行关联,LIRS能够有效地提高内存访问速度,减少内存开销。同时,本文还针对传统LRU算法的局限性,提出了相应的解决方案。
钱坤
2017/08/21
8K3
cache 淘汰算法:LIRS 算法
页面置换算法详解
进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。
Leophen
2019/08/23
3.8K0
页面置换算法详解
看动画轻松理解「链表」实现「LRU缓存淘汰算法」
前几节学习了「链表」、「时间与空间复杂度」的概念,本节将结合「循环链表」、「双向链表」与 「用空间换时间的设计思想」来设计一个很有意思的缓存淘汰策略:LRU缓存淘汰算法。
五分钟学算法
2018/12/25
8670
缓存淘汰算法与 python 中 lru_cache 装饰器的实现
此前的文章中,我们介绍过常见两种缓存架构 — 穿透型缓存与旁路型缓存。 常见缓存架构 — 穿透型缓存与旁路型缓存
用户3147702
2022/06/27
5360
缓存淘汰算法与 python 中 lru_cache 装饰器的实现
相关推荐
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档