• 001 LRU-缓存淘汰算法


    1.介绍

      LRU是LeastRecentlyUsed近期最少使用算法。内存管理的一种页面置换算法,对于在内存中但又不用的数据块(内存块)叫做LRU,Oracle会根据哪些数据属于LRU而将其移出内存而腾出空间来加载另外的数据。

      LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。

    2.实现原理图

      使用链表保存缓存数据实现。

      

      1. 新数据插入到链表头部;

      2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;

      3. 当链表满的时候,将链表尾部的数据丢弃。

    3.命中率

      当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,缓存污染情况比较严重。

    4.举例

      假设 序列为 4 3 4 2 3 1 4 2,物理块有3个

      则:

      首轮 4调入内存 4

      次轮 3调入内存 3 4

      之后 4调入内存 4 3

      之后 2调入内存 2 4 3

      之后 3调入内存 3 2 4

      之后 1调入内存 1 3 2(因为最少使用的是4,所以丢弃4)

      之后 4调入内存 4 1 3(原理同上)

      最后 2调入内存 2 4 1

      

  • 相关阅读:
    12.数组三--数组的冒泡排序与快速排序
    11.数组二
    10.数组一
    Vue之组件与父子传值
    Django模型层
    面向对象的组合用法
    面向对象初识
    Python内置函数
    列表推导式,生成器表达式
    装饰器进阶
  • 原文地址:https://www.cnblogs.com/juncaoit/p/6305601.html
Copyright © 2020-2023  润新知