什么是 LRU?

LRU (Least recently used:最近最少使用)算法在缓存写满的时候,会根据所有数据的访问记录,淘汰掉未来被访问几率最低的数据。也就是说该算法认为,最近被访问过的数据,在将来被访问的几率最大。

LRU - 图1

  1. 假设我们有一块内存,一共能够存储 5 数据块;
  2. 依次向内存存入A、B、C、D、E,此时内存已经存满;
  3. 再次插入新的数据时,会将在内存存放时间最久的数据A淘汰掉;
  4. 当我们在外部再次读取数据B时,已经处于末尾的B会被标记为活跃状态,提到头部,数据C就变成了存放时间最久的数据;
  5. 再次插入新的数据G,存放时间最久的数据C就会被淘汰掉;