@alloc/quick-lru

中文文档
5.3.0发布于 2026/09/01MITTypeScript零依赖构建来源已验证近 30 天下载 3亿

简单的“最近使用的最东北”缓存

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. API 密码
  4. 新的快速路由( 选项 )
  5. 选项
  6. 实例
  7. 算法

@alloc/quick-lru (英语) Build Status Coverage Status

简单 “最近使用的东北”缓存

这是通用JS唯一的叉 quick-lru。 。 。 .

当需要缓存一些东西并限制内存使用时有用.

见 算法区域 详细执行情况.

安装

$ npm install @alloc/quick-lru

使用量

const QuickLRU = require('@alloc/quick-lru');

const lru = new QuickLRU({maxSize: 1000});

lru.set('🦄', '🌈');

lru.has('🦄');
//=> true

lru.get('🦄');
//=> '🌈'

API 密码

新的快速路由( 选项 )

返回新实例 .

选项

类型 : object

最大大小

需求
类型 : number

在驱逐最近使用最少的物项之前设定的最大物项数量.

说明: 双切分算法在物理上最多可保留两次 maxSize 基于性能原因的条目,即使报告的缓存大小不超过 maxSize。 。 。 .

最大年龄

类型 : number
默认 : Infinity

一个项目应保留在缓存中的最大毫秒数. 默认最大年龄为无限, 这意味着项目永远不会过期 .

下回懒活会过期 write 或者说 read 电话.

物品的个别过期可由下列规定: set(key, value, options) 方法.

退出选举

可选
类型 : (key, value) => void

在某件物品因容量压力或TTL过期被从缓存中取出之前立即调用.

用于副作用或对象URL等需要明确清理的项目(revokeObjectURL) (中文(简体) ).

此回调不要求手动清除 delete() 或者说 clear()。 。 。 .

实例

事实就是 iterable 这样你就可以直接用在一个 for…of 循环.

两者 key 财务报告和审定财务报表 value 可以是任何类型的.

. set( 键、 值、 选项 )

设定项目 。 返回实例 .

一项物品的个别过期可注明为 maxAge 选项。 如果未具体说明,则全局 maxAge 如果在构建器上指定了值,则将使用值,否则项目永远不会过期.

.get(键)

拿件东西来.

. has( 键)

检查项目是否存在 .

.peek( 键)

得到一个没有标记 最近使用它.

终止 英寸( 键)

获得给定物品的剩余生活时间(以毫秒计),或 undefined 如果项目不在缓存中.

  • 不标记最近使用的项目 .
  • 不触发懒惰过期, 或删除过期时的条目 .
  • 回返 Infinity 如果项目没有过期.
  • 如果物品已经过期但尚未懒散取出, 可能返回负数 .

.删除( 键)

删除一个项目.

回返 true 如果物品被取出,或 false 如果项目不存在.

清晰( )

删除所有项目.

调整大小( 最大尺寸)

更新 maxSize,必要时丢弃物品。 插入顺序大多被保留下来,尽管这不是一个强有力的保证.

用于实时系统中缓存大小的即时调试.

. keys () (中文(简体) )

所有钥匙都可以用.

值( )

对所有的价值观都是可移动的.

上升( )

适用于所有条目,从最古老者开始(在调整时上升).

递增( )

适用于所有条目,从最新的条目开始(在调整后降级).

大小

所存项数.

算法

此库执行一个变体 hashlru 算法 使用两个 Map 对象。 一张地图持有最近添加或访问的条目,而另一张地图持有较旧的条目。 当最近的地图到达时 maxSize,它取代了更古老的地图,并创建了新的最近地图.

这样可以避免传统链接列表LRU要求的频繁删除操作,并支持任何类型的密钥和 undefined 数值。 两者的权衡是 这两张地图可以保持两倍的目标 maxSize 在旋转之间。 当临时内存管理费无法接受时使用严格的缓存大小 .


使用 Tidelift 订阅软件包获得专业支持
Tidelift 有助于让开源为维护者持续提供,同时给公司
保证其依赖性的安全、维持和许可证发放.

版本与发布记录

@alloc/quick-lru 共发布 2 个版本,首次发布于 2021/04/06;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.3.0latest2026/09/012 个月前
5.2.02021/04/065 年前

关于 @alloc/quick-lru 的常见问题

@alloc/quick-lru 是什么?

简单的“最近使用的最东北”缓存

如何安装 @alloc/quick-lru?

在项目目录运行 npm install @alloc/quick-lru,或使用 pnpm add / yarn add / bun add。

@alloc/quick-lru 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@alloc/quick-lru 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=10。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@alloc/quick-lru 可以商用吗?

@alloc/quick-lru 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@alloc/quick-lru 的下载量有多少?

根据 npm 官方下载统计,@alloc/quick-lru 在 2026/10/05 – 2026/11/03 这 30 天内被下载 302,961,664 次,日均约 10,098,722 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@alloc/quick-lru 还在维护吗?

最新版本 5.3.0 发布于 2026/09/01(2 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 1 个;首次发布于 2021/04/06。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。