Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)分析

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

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

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

常见类型包括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
5.1K0
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
缓存算法(页面置换算法)-FIFO、LFU、LRU
  FIFO(First in First out),先进先出。其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢?因为这个原则简单、且符合人们的惯性思维,具备公平性,并且实现起来简单,直接使用数据结构中的队列即可实现。
哲洛不闹
2019/06/05
3.1K0
昨天面试被问到的 缓存淘汰算法FIFO、LRU、LFU及Java实现
第一次请求时把计算好的结果存放在缓存中,下次遇到同样的请求时,把之前保存在缓存中的数据直接拿来使用。
万猫学社
2022/04/22
3440
什么是缓存置换算法?
前面的文章已经介绍了什么是操作系统的虚拟内存,与本文要介绍的缓存置换算法息息相关,如果还没有看的朋友,建议先读一下上篇文章,链接是:什么是操作系统的虚拟内存?
我是攻城师
2019/07/19
1.8K0
【愚公系列】软考高级-架构设计师 007-存储技术(Cache)
Cache(发音为“cash”)是一种高速数据存储层,存在于计算机的存储器层次结构中,它的作用是暂时存储近期被访问的数据和指令,以便于快速访问。由于Cache的访问速度远高于主存储器(如RAM)和辅助存储设备(如硬盘或SSD),利用Cache可以显著减少数据访问的平均时间,从而提高计算机系统的整体性能。
愚公搬代码
2024/05/11
2120
如何动手撸一个简单的LFU缓存
关于第一种FIFO策略的实现,比较简单,可采用固定长度的数组和链表来处理,这里就不重点说了。今天我们的重点是LFU缓存的实现。
我是攻城师
2019/07/30
1.2K0
缓存淘汰/读写/存在问题总结
实现思路也是很简单的, 套用消息队列思路, 每次新生成缓存标记放到队列尾部, 优先淘汰队列头部的数据.
用户2825413
2020/03/23
6810
动手实现 LRU 算法,以及 Caffeine 和 Redis 中的缓存淘汰策略
那天我在 LeetCode 上刷到一道 LRU 缓存机制的问题,第 146 题,难度为中等,题目如下。
古时的风筝
2020/07/16
8670
常用的淘汰算法
FIFO 算法是一种比较容易实现的算法。它的思想:是基于队列的先进先出原则,最先进入的数据会被最先淘汰掉。这是最简单、最公平的一种思想。
凯哥Java
2022/12/16
1.1K0
常用的淘汰算法
缓存淘汰算法与 python 中 lru_cache 装饰器的实现
此前的文章中,我们介绍过常见两种缓存架构 — 穿透型缓存与旁路型缓存。 常见缓存架构 — 穿透型缓存与旁路型缓存
用户3147702
2022/06/27
5680
缓存淘汰算法与 python 中 lru_cache 装饰器的实现
如何动手撸一个LRU缓存
上篇文章介绍了,如何动手实现一个LFU缓存,今天我们来学习下如何动手实现一个LRU缓存,在这之前,我们还是先回顾下关于缓存置换算法的三种策略:
我是攻城师
2019/07/31
6480
如何动手撸一个LRU缓存
什么是DevSecOps、缓存驱逐策略、减少延迟的策略
LRU 驱逐策略首先删除最近访问最少的项目。此方法基于以下原则:最近访问的项目更有可能在不久的将来再次访问。
BUG弄潮儿
2025/03/03
1371
什么是DevSecOps、缓存驱逐策略、减少延迟的策略
手写LRU缓存淘汰算法
在我们这个日益追求高效的世界,我们对任何事情的等待都显得十分的浮躁,网页页面刷新不出来,好烦,电脑打开运行程序慢,又是好烦!那怎么办,技术的产生不就是我们所服务么,今天我们就聊一聊缓存这个技术,并使用我们熟知的数据结构--用链表实现LRU缓存淘汰算法。
Simon郎
2021/03/01
7850
通俗讲解:缓存、缓存算法和缓存框架
1 引言 我们都听过 cache,当你问他们是什么是缓存的时候,他们会给你一个完美的答案,可是他们不知道缓存是怎么构建的,或者没有告诉你应该采用什么标准去选择缓存框架。在这篇文章,我们会去讨论缓存,缓存算法,缓存框架以及哪个缓存框架会更好。 2 面试 “缓存就是存贮数据(使用频繁的数据)的临时地方,因为取原始数据的代价太大了,所以我可以取得快一些。” 这就是 programmer one (programmer one 是一个面试者)在面试中的回答(一个月前,他向公司提交了简历,想要应聘要求在缓存,
前朝楚水
2018/04/03
1.3K0
通俗讲解:缓存、缓存算法和缓存框架
页面置换算法详解
进程运行时,若其访问的页面不在内存而需将其调入,但内存已无空闲空间时,就需要从内存中调出一页程序或数据,送入磁盘的对换区,其中选择调出页面的算法就称为页面置换算法。
Leophen
2019/08/23
4.3K0
页面置换算法详解
缓存及在 Python 中使用缓存
缓存操作主要有两种类型。缓存如浏览器缓存,服务器缓存,代理缓存,硬件缓存工作原理的读写缓存。当处理缓存时,我们总是有大量的内存需要花费大量的时间来读写数据库、硬盘。 缓存则能帮我们加快这些任务。
Ewdager
2020/07/20
3.9K0
Golang groupcache LRU 缓存简介与用法
LRU(Least Recently Used,最近最久未使用算法)是一种常见的缓存淘汰算法,当缓存满时,淘汰最近最久未使用的元素,在很多分布式缓存系统(如Redis, Memcached)中都有广泛使用。其基本思想是如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当缓存满时,最久未被访问的数据最先被淘汰。具体做法是将最近使用的元素存放到靠近缓存顶部的位置,当一个新条目被访问时,LRU 将它放置到缓存的顶部。当缓存满时,较早之前访问的条目将从缓存底部被移除。
恋喵大鲤鱼
2019/08/01
9.3K1
字节二面,让写一个LFU缓存策略算法 !
LRU全称 "Least Recently Used",最近最少使用策略,判断最近被使用的时间,距离目前最远的数据优先被淘汰,作为一种根据访问时间来更改链表顺序从而实现缓存淘汰的算法,它是redis采用的淘汰算法之一。redis还有一个缓存策略叫做LFU, 那么LFU是什么呢?
程序员小猿
2021/03/24
7630
字节二面,让写一个LFU缓存策略算法 !
动手实现一个localcache - 设计篇
哈喽,大家好,我是asong。最近想动手写一个localcache练练手,工作这么久了,也看过很多同事实现的本地缓存,都各有所长,自己平时也在思考如何实现一个高性能的本地缓存,接下来我将基于自己的理解实现一版本地缓存,欢迎各位大佬们提出宝贵意见,我会根据意见不断完善的。
Golang梦工厂
2022/07/11
3860
动手实现一个localcache - 设计篇
【考研408&计算机组成原理】存储系统之Cache考点
目前暂时只接入了微信,如果大家对这个问答系统感兴趣的话可以在我的主页里找到我的微信号
苏泽
2024/06/28
3750
【考研408&计算机组成原理】存储系统之Cache考点
相关推荐
常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档