LRU(Least Recently Used,最近最少使用) 是缓存管理中的经典淘汰策略,核心思想是:当缓存空间不足时,优先淘汰最久未被访问的数据,保留高频访问的数据,从而提高缓存命中率。
假设缓存容量为 3,数据访问顺序为:A → B → C → A → D → B
,下面演示LRU的工作流程:
最终缓存内容:B、D、A(B为最新,A为最旧)
淘汰顺序:B(步骤5后变旧) → C(步骤6被淘汰) → D(后续继续淘汰)
数据库查询缓存
网页浏览器缓存
CDN节点缓存
操作系统内存管理
LRU的难点在于 快速查找数据位置 和 高效调整顺序,常用数据结构组合如下:
双向链表(Doubly Linked List)
维护数据的访问顺序,头部是最近访问,尾部是待淘汰数据。
哈希表(Hash Table)
以键值对存储数据,实现O(1)时间复杂度的数据查找。
操作 | 步骤 |
---|---|
读取数据(Get) | 1. 通过哈希表找到数据节点。<br>2. 将节点移到链表头部。 |
写入数据(Put) | 1. 若数据已存在:更新值并移到头部。<br>2. 若数据不存在:创建新节点插入头部;若缓存满,删除尾部节点。 |
LRU通过淘汰“最近最少使用”数据,在缓存容量有限时最大化热点数据留存。它广泛用于高频访问场景,但需结合实际业务特点选择优化方案(如LRU-K或2Q)。对于强时效性或短生命周期数据(如新闻热点),可考虑结合TTL(过期时间)机制。