# @akashbabu/lfu-cache 中文文档

规范地址：https://npmcn.com/package/%40akashbabu/lfu-cache/

版本：1\.1\.0
npm 元数据更新时间：2022-09-09T11:27:29.288Z
中文译文更新时间：2026-11-06T20:56:23.435Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：102 kB，20 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=8
- 运行依赖：1 个
- 首次发布：2019-12-22T06:58:31.766Z
- 最新版本发布：2022-09-09T11:27:29.223Z
- 近 30 天下载量：2356（2026-10-06 至 2026-11-04，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 0 个）

## 中文简介

复杂的 LFU 缓存执行 `O(1)` 所有交易

## 安装

```sh
npm install @akashbabu/lfu-cache
```

也可以使用：`pnpm add @akashbabu/lfu-cache`、`yarn add @akashbabu/lfu-cache`、`bun add @akashbabu/lfu-cache`

## README

# 易发卡 [![Coverage Status](https://coveralls.io/repos/github/AkashBabu/lfu-cache/badge.svg?branch=master)](https://coveralls.io/github/AkashBabu/lfu-cache?branch=master) [![Build Status](https://travis-ci.com/AkashBabu/lfu-cache.svg?branch=master)](https://travis-ci.com/AkashBabu/lfu-cache) [![Maintainability](https://api.codeclimate.com/v1/badges/b31fd7f387b54be7a02c/maintainability)](https://codeclimate.com/github/AkashBabu/lfu-cache/maintainability)

复杂的 LFU 缓存执行 `O(1)` 如本文件所述,所有交易 [K. Shah、A. Mitra和D. Matani的“执行LFU缓存驱逐计划的O(1)算法”](http://dhruvbird.com/lfu.pdf)

创建此库的动机是什么( 外部其他 LFU 缓存库的情况) ?

-   最重要的是字迹支持
-   执行 `O(1)` 对所有交易( 尽管我为它创建了算法 )
-   可维护代码

如果你想偷看源代码,我建议你先阅读上面提到的纸张中的算法,然后研究代码,以便更好的理解或建议.

## 安装

> i@akashbabu/lfu-cache - S

## 示例

```TS
import LFUCache from '@akashbabu/lfu-cache';

const lfu = new LFUCache<string>();

lfu.set('foo', 'bar');
console.log(lfu.size) // => 1

console.log(lfu.get('foo')) // => bar
console.log(lfu.peek('foo')) // => bar

lfu.delete('foo')
console.log(lfu.get('foo')) // => undefined


lfu.set('item1', 'foo')
lfu.set('item1', 'bar')
console.log(lfu.get('item1')) // => bar

lfu.clear();
console.log(lfu.size) // => 0

lfu.set('item1', 'foo')
lfu.set('item2', 'bar')
lfu.set('item3', 'baz')

lfu.forEach(([key, val], i) => {
  console.log(`${i + 1})`, key, val)
})
// => 1) item1 foo
// => 2) item2 bar
// => 3) item3 baz

console.log(lfu.map<string>(([key, val], i) => `${i + 1}) ${key} -> ${val}`))
// => ["1) item1 foo", "2) item2 bar", "3) item3 baz"]
```

## API 文档

#### 新建 LFUCACH<T>( 选项? =%% )

证明 LFU 缓存

T - > 所存储值的类型

| 参数 | 说明 |
| :-- | :-- |
| 选项.max (可选) | 指定缓存中要累积的最大数量项。 默认为 `100` |
| 选项.evicCount(可选) | 指定缓存满后要删除的项目数量。 若为 `options.max` 已指明,并且 `options.evictCount` 未指定,则默认为 `10%` 联 合 国 `options.max` 否则它默认为 `1` |
| 选项.maxAge(可选) | 如果指定,则在指定后懒散地将密钥驱逐 `maxAge`。请注意,这是在 `milliseconds (ms)` |

#### 大小

返回缓存中项目的总数.  
这是一个 `readonly` 属性.

#### .set(键:字符串,值:T):空

抓取给定的密钥值对, 如果缓存满了, 则驱逐 LFU 密钥 .

#### .get(键:字符串): TQQ未定义

返回当前或未过期的缓存值, 否则返回 `undefined`

#### .delete(键:字符串):布尔

从缓存中删除给定的密钥。 回返 `true` 如果给定的密钥已存在, 且已成功删除, 则返回 `false`

#### .peek(键:字符串): T QQ 未定义

返回给定密钥的缓存值,而不增加给定密钥的访问频率。 回返 `undefined` 如果缓存中没有给定的密钥

#### .foreach(cb): (\[键:字符串, val: T\], i: 数字) QQ空出:空出

在整个缓存中显示

#### 地图(cb): (\[关键:字符串, val: T\], i: 数字) QQ U: U \[\]

穿过整个缓存并返回产生的数组

U - > 当返回类型 `cb` 名为

#### 清除 (): 无效

清除缓存中的所有数据

## 捐款

我们没有留下任何东西 `v1.0.0`,但是总有开发的余地,因此,如果你发现任何错误或有任何建议,那么请着手为同样的问题提出问题或PR.

## 常见问题

### @akashbabu/lfu-cache 是什么？

复杂的 LFU 缓存执行 O\(1\) 所有交易

### 如何安装 @akashbabu/lfu-cache？

在项目目录运行 npm install @akashbabu/lfu-cache，或使用 pnpm add / yarn add / bun add。

### @akashbabu/lfu-cache 支持 TypeScript 吗？

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

### @akashbabu/lfu-cache 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @akashbabu/lfu-cache 需要什么版本的 Node\.js？

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

### @akashbabu/lfu-cache 可以商用吗？

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

### @akashbabu/lfu-cache 的下载量有多少？

根据 npm 官方下载统计，@akashbabu/lfu-cache 在 2026/10/06 – 2026/11/04 这 30 天内被下载 2,356 次，日均约 79 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @akashbabu/lfu-cache 还在维护吗？

最新版本 1\.1\.0 发布于 2022/09/09（4 年前）；至今共发布 4 个版本，其中过去 12 个月发布了 0 个；首次发布于 2019/12/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

