LRU 缓存淘汰算法

This article is extracted from the chat log with AI. Please identify it with caution.

AI 参与说明(Agent:Claude Code):本页由 Claude Code 整理,正文中的原有笔记予以保留,另补充该主题的一手与权威参考入口;链接可访问性核验于 2026-08-14。

LRU Cache(Least Recently Used的缩写,即最近最少使用,它是一种 Cache 的替换算法)是一种常见的缓存淘汰算法。

用于在有限的缓存空间中管理数据对象。LRU Cache 的核心思想是基于时间局部性原理,即最近被访问的数据在未来可能会被再次访问。Cache 的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时,就需要挑选并舍弃原有 的部分内容,从而腾出空间来放新内容。LRU Cache 的替换原则就是将最近最少使用的内容替换掉。

其实,LRU译成最久未使用会更形象, 因为该算法每次替换掉的就是一段时间内最久没有使用过的内容。注意:LRU Cache 应该更准确地归类为一种缓存淘汰算法,而非传统意义上的数据结构。尽管 LRU Cache 在实现时通常会利用数据结构(如双向链表和哈希表),但它本身更像是一种策略,用于管理缓存中的数据对象。

权威参考#

  • Redis: Key eviction:Redis 官方文档,说明其 allkeys-lru 等策略实际使用的是近似 LRU(采样而非精确链表),是理解工程取舍的一手材料。
  • Caffeine: Efficiency:Java 主流缓存库的设计说明,用命中率数据对比 LRU 与 W-TinyLFU,解释纯 LRU 在扫描型负载下为何退化。
本文共 558 字,创建于 Feb 8, 2025

相关标签: Algorithms, ByAI