@akashbabu/lfu-cache

中文文档
1.1.0发布于 2022/09/09MITTypeScriptESM + CJS近 30 天下载 2356

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

中文使用文档
文档目录4 节
  1. 安装
  2. 示例
  3. API 文档
  4. 捐款

易发卡 Coverage Status Build Status Maintainability

复杂的 LFU 缓存执行 O(1) 如本文件所述,所有交易 K. Shah、A. Mitra和D. Matani的“执行LFU缓存驱逐计划的O(1)算法”

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

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

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

安装

i@akashbabu/lfu-cache - S

示例

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 共发布 4 个版本,首次发布于 2019/12/22;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.1.0latest2022/09/094 年前
1.0.22020/01/296 年前
1.0.12019/12/296 年前
1.0.02019/12/226 年前

关于 @akashbabu/lfu-cache 的常见问题

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