Repolode
isaacs

isaacs/node-lru-cache

一个 JavaScript 实现的 LRU 缓存,达到数量、体积或 TTL 上限时自动淘汰最久未使用的条目。

Star
5,918
Fork
380
未关闭 Issue
15
最近提交
上个月

这是什么?

lru-cache 是一个 JavaScript 缓存对象,会保留最近访问的一定数量条目,新数据超出上限时自动移除最久未使用的条目。它可以在 Node.js 和浏览器中使用,通过 npm 安装。

除基本的 LRU 淘汰外,它还支持通过自定义函数计算条目大小来限制总存储体积,支持按条目或整体设置 TTL 过期时间,提供淘汰时的 dispose 回调用于资源清理,并提供带有 stale-while-revalidate 行为的异步 fetch 方法。键可以是非字符串对象,但需要是同一个对象引用。它主要是 LRU 缓存而非 TTL 缓存,除非显式配置,否则不会主动清理过期条目。

项目附带 TypeScript 类型定义,并在支持的平台上提供 diagnostics channel 监控接口。

核心功能

  • 01超出最大条目数时自动淘汰最久未使用的数据。
  • 02可通过自定义大小计算函数限制总存储体积。
  • 03支持整体或单个条目的 TTL 过期。
  • 04提供 dispose 回调,便于淘汰时释放资源。
  • 05内置支持 stale-while-revalidate 的异步 fetch 方法。
  • 06附带 TypeScript 类型定义。

适用场景

  • 在 Node.js 服务中缓存高开销计算或 API 调用结果。
  • 按条目总大小限制进程内缓存的内存占用。
  • 在浏览器应用中以有界内存缓存已获取的数据。

快速上手

  1. 1

    使用 npm 安装该包

    npm install lru-cache --save
  2. 2

    导入 LRUCache 并创建一个带最大容量的缓存

使用前须知

  • 主要不是 TTL 缓存;默认情况下不会主动清理过期条目。
  • set 操作比部分替代方案略慢,README 建议除非确有需要,否则避免使用 dispose、大小追踪和 TTL 功能。

标签

常见问题

node-lru-cache 是什么?
一个 JavaScript 实现的 LRU 缓存,达到数量、体积或 TTL 上限时自动淘汰最久未使用的条目。 lru-cache 是一个 JavaScript 缓存对象,会保留最近访问的一定数量条目,新数据超出上限时自动移除最久未使用的条目。它可以在 Node.js 和浏览器中使用,通过 npm 安装。
node-lru-cache 可以免费使用吗?用的什么许可证?
node-lru-cache 以 BlueOak-1.0.0 许可证开源。用于商业产品前,请先确认许可证条款。
node-lru-cache 还在维护吗?
半年内有更新。node-lru-cache 最近一次提交是在 2026年9月18日。
node-lru-cache 适合用来做什么?
在 Node.js 服务中缓存高开销计算或 API 调用结果。 按条目总大小限制进程内缓存的内存占用。 在浏览器应用中以有界内存缓存已获取的数据。
node-lru-cache 怎么安装和运行?
使用 npm 安装该包: npm install lru-cache --save 导入 LRUCache 并创建一个带最大容量的缓存
在哪里获取 node-lru-cache?
源代码和安装说明在 GitHub 上:https://github.com/isaacs/node-lru-cache

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目