常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)
2024-09-02 11:02:43
缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。
常见类型包括LFU、LRU、ARC、FIFO、MRU。
最不经常使用算法(LFU):
这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。
最近最少使用算法(LRU):
这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置。当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存达到极限时,较早之前访问的条目将从缓存底部开始被移除。这里会使用到昂贵的算法,而且它需要记录“年龄位”来精确显示条目是何时被访问的。此外,当一个LRU缓存算法删除某个条目后,“年龄位”将随其他条目发生改变。
自适应缓存替换算法(ARC):
在IBM Almaden研究中心开发,这个缓存算法同时跟踪记录LFU和LRU,以及驱逐缓存条目,来获得可用缓存的最佳使用。
先进先出算法(FIFO):
FIFO是英文First In First Out 的缩写,是一种先进先出的数据缓存器,他与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单,但缺点就是只能顺序写入数据,顺序的读出数据,其数据地址由内部读写指针自动加1完成,不能像普通存储器那样可以由地址线决定读取或写入某个指定的地址。
最近最常使用算法(MRU):
这个缓存算法最先移除最近最常使用的条目。一个MRU算法擅长处理一个条目越久,越容易被访问的情况。
推荐阅读
分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。
最新文章
- The Non-Inverting Amplifier Output Resistance by Adrian S. Nastase [ Copied ]
- 使用EPPLUS操作EXcel
- LeetCode 刷题记录
- cocos2d-x读取xml(适用于cocos2d-x 2.0以上版本号)
- 用JQuery中的Ajax方法获取web service等后台程序中的方法
- 《Java程序员面试笔试宝典》之组合与继承有什么区别
- Spring+SpringMVC+MyBatis深入学习及搭建(十三)——SpringMVC入门程序(二)
- linux路由表
- 第七章· Redis Cluster 核心技术
- shell 脚本使用记录
- VMware与Centos系统安装 和重置root密码
- iOS常用的代码块整理
- MATLAB 提取头发(最大连通域)
- Palindrome Partitioning I &; II
- 压力测试 JMeter3.3
- python qq邮箱发送邮件
- react native android模拟机调试
- mysql 在创建表或者插入时遇到关键字报错
- Spring Cloud实战之初级入门(五)— 配置中心服务化与配置实时刷新
- mysql8基本配置,差点被各种坑蒙圈