缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。

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

最不经常使用算法(LFU):

这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。

最近最少使用算法(LRU):

这个缓存算法将最近使用的条目存放到靠近缓存顶部的位置。当一个新条目被访问时,LRU将它放置到缓存的顶部。当缓存达到极限时,较早之前访问的条目将从缓存底部开始被移除。这里会使用到昂贵的算法,而且它需要记录“年龄位”来精确显示条目是何时被访问的。此外,当一个LRU缓存算法删除某个条目后,“年龄位”将随其他条目发生改变。

自适应缓存替换算法(ARC):

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

先进先出算法(FIFO):

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

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

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

推荐阅读

干货:2TB架构师四阶段视频教程

面经:史上最全Java多线程面试题及答案

面经:史上最全阿里高级Java面试题

面经:史上最全Spring面试题

教程:最全Spring Boot全套视频教程

书籍:进阶Java架构师必看的15本书

工具:推荐一款在线创作流程图、思维导图软件

分享Java干货,高并发编程,热门技术教程,微服务及分布式技术,架构设计,区块链技术,人工智能,大数据,Java面试题,以及前沿热门资讯等。

常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)相关推荐

  1. Java 常用缓存淘汰算法解析

    前言 对于很多缓存中间件来说,内存是其操作的主战场,以redis来说,redis是很多互联网公司必备的选择,redis具有高效.简洁且易用的诸多特性被大家广泛使用,但我们知道,redis操作大多数属于 ...

  2. 缓存淘汰算法之LRU

    参考:http://www.cnblogs.com/-OYK/archive/2012/12/05/2803317.html http://blog.csdn.net/exceptional_dere ...

  3. 看动画轻松理解「链表」实现「 LRU 缓存淘汰算法」

    作者 | 吴至波 责编 | 胡巍巍 快速挑战Python全栈工程师: https://edu.csdn.net/topic/python115?utm_source=csdn_bw 前几节学习了「链表 ...

  4. 常用缓存淘汰策略FIFO、LFU、LRU

    常用缓存淘汰策略FIFO.LFU.LRU conowen 常用缓存策略 常用的缓存淘汰策略有以下 先进先出算法(FIFO) Least Frequently Used(LFU) 淘汰一定时期内被访问次 ...

  5. 用 js 实现 FIFO, LRU, LFU 缓存淘汰算法

    看了网上一些人写的缓存淘汰算法,大概明白了这三种淘汰算法的实现思路,然后自己在对这些算法的理解基础上用js语言实现如下 1. FIFO 先入先出 这个相对比较简单,使用一个数组存储,在没到达最大存储空 ...

  6. mysql缓存淘汰机制_聊聊缓存淘汰算法-LRU 实现原理

    前言 我们常用缓存提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,就需要删除部分数据挪出空间,这样新数据才可以添加进来.缓存数据不能随机删除,一般情况下我们需要根据某种算法删除缓存数据.常用淘 ...

  7. 面试官:你知道 LRU算法 —— 缓存淘汰算法吗?

    常用缓存提升数据查询速度,由于缓存容量有限,当缓存容量到达上限,就需要删除部分数据挪出空间,这样新数据才可以添加进来.缓存数据不能随机删除,一般情况下我们需要根据某种算法删除缓存数据.常用淘汰算法有 ...

  8. 看动画轻松理解「链表」实现「LRU缓存淘汰算法」

    作者 | 程序员小吴,哈工大学渣,目前正在学算法,开源项目 「 LeetCodeAnimation 」5500star,GitHub Trending 榜连续一月第一. 本文为 AI科技大本营投稿文章 ...

  9. 06 | 链表(上):如何实现LRU缓存淘汰算法?

    缓存 作用 缓存是一种提高数据读取性能的技术,在硬件设计.软件开发中都有着非常广泛的应用,比如常见的 CPU 缓存.数据库缓存.浏览器缓存等等. 淘汰策略 常见的策略有三种:先进先出策略 FIFO(F ...

最新文章

  1. 车坛刮起了一阵文艺风
  2. LeetCode Construct Binary Tree from Inorder and Postorder Traversal
  3. 正则化方法:数据增强、regularization、dropout
  4. HDU 1213 How Many Tables(并查集模板)
  5. asterisk 互联问题
  6. python panda3d教程_panda3d基础学习
  7. 计算机网络DNS域名配置,如何设置计算机的IP地址和DNS域名服务器
  8. QTP软件测试工具学习
  9. OpenCV身份证离线识别技术实战(一)
  10. 手把手教你安装IAR
  11. 行政区划矢量数据介绍与下载教程
  12. .NET(c#) 移动APP开发平台 - Smobiler(2) - 平台介绍
  13. 【插件】油猴插件安装
  14. MIPI归纳---为什么阻抗为100欧姆
  15. 【密码学相关】常用的期刊,会议,实验室
  16. img html 文件怎么打开,img文件怎么打开?img文件用什么打开?
  17. Java中Scanner的进阶---求和与求平均数
  18. 小武学fpgastep4
  19. Android开发该学习哪些东西?
  20. k30s刷鸿蒙系统,RedmiK30S或于10月27日发布:今年最后一款骁龙865手机

热门文章

  1. C/C++实习面试(一)
  2. html+css 简单的静态网页小米官网
  3. 标签打印软件如何连接SQL Server数据库打印产品标签
  4. 基于WinCE6.O操作系统的在线流媒体播放软件设计
  5. Jackson 转换中 关于 浮点数处理的问题
  6. mysql四表统计数量:统计中国各个省份安装企业站点数量
  7. 日常用语--打电话(整理)
  8. SQLServer CEILING函数和 FLOOR函数
  9. 机器学习推荐系统评价指标之AUC
  10. 基于ArcGIS API for WPF路径分析源码实例