# @alloc/quick-lru 中文文档

规范地址：https://npmcn.com/package/%40alloc/quick-lru/

版本：5\.3\.0
npm 元数据更新时间：2026-08-31T17:27:31.076Z
中文译文更新时间：2026-11-05T15:42:45.721Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40alloc/quick-lru
原文对照：https://npmcn.com/package/%40alloc/quick-lru/?lang=original
项目主页：https://github.com/aleclarson/quick-lru#readme
源码仓库：https://github.com/aleclarson/quick-lru

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：16.6 kB，5 个文件
- TypeScript 类型：包内自带
- Node.js 要求：\>=10
- 运行依赖：0 个
- 首次发布：2021-04-06T00:28:18.367Z
- 最新版本发布：2026-08-31T17:27:30.730Z
- 近 30 天下载量：302961664（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 1 个）

## 中文简介

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

## 安装

```sh
npm install @alloc/quick-lru
```

也可以使用：`pnpm add @alloc/quick-lru`、`yarn add @alloc/quick-lru`、`bun add @alloc/quick-lru`

## README

# @alloc/quick-lru (英语) [![Build Status](https://travis-ci.org/aleclarson/quick-lru.svg?branch=master)](https://travis-ci.org/aleclarson/quick-lru) [![Coverage Status](https://coveralls.io/repos/github/aleclarson/quick-lru/badge.svg?branch=master)](https://coveralls.io/github/aleclarson/quick-lru?branch=master)

> 简单 [“最近使用的东北”缓存](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29)

这是通用JS唯一的叉 [`quick-lru`](https://github.com/sindresorhus/quick-lru)。 。 。 .

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

见 [算法区域](https://npmcn.com/package/%40alloc/quick-lru/#readme-algorithm) 详细执行情况.

## 安装

```
$ npm install @alloc/quick-lru
```

## 使用量

```js
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`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) 这样你就可以直接用在一个 [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) 循环.

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

#### . set( 键、 值、 选项 )

设定项目 。 返回实例 .

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

#### .get(键)

拿件东西来.

#### . has( 键)

检查项目是否存在 .

#### .peek( 键)

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

#### 终止 英寸( 键)

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

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

#### .删除( 键)

删除一个项目.

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

#### 清晰( )

删除所有项目.

#### 调整大小( 最大尺寸)

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

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

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

所有钥匙都可以用.

#### 值( )

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

#### 上升( )

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

#### 递增( )

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

#### 大小

所存项数.

## 算法

此库执行一个变体 [`hashlru` 算法](https://github.com/dominictarr/hashlru#algorithm) 使用两个 [`Map`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map) 对象。 一张地图持有最近添加或访问的条目,而另一张地图持有较旧的条目。 当最近的地图到达时 `maxSize`,它取代了更古老的地图,并创建了新的最近地图.

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

* * *

**[使用 Tidelift 订阅软件包获得专业支持](https://tidelift.com/subscription/pkg/npm-quick-lru?utm_source=npm-quick-lru&utm_medium=referral&utm_campaign=readme)**  
Tidelift 有助于让开源为维护者持续提供,同时给公司  
保证其依赖性的安全、维持和许可证发放.

## 常见问题

### @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 和提交记录判断。

