# @bondsports/cache 中文文档

规范地址：https://npmcn.com/package/%40bondsports/cache/

版本：1\.1\.10
npm 元数据更新时间：2026-08-25T13:49:16.748Z
中文译文更新时间：2026-11-08T10:57:31.677Z
软件包许可：ISC

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

原始 npm 页面：https://www.npmjs.com/package/%40bondsports/cache
原文对照：https://npmcn.com/package/%40bondsports/cache/?lang=original
项目主页：https://github.com/Bond-Sports/bondUtils/tree/main/packages/cache#readme
源码仓库：https://github.com/Bond-Sports/bondUtils#main

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

- 包体积（解压后）：76.9 kB，54 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2022-11-17T08:43:55.838Z
- 最新版本发布：2025-08-24T12:27:26.298Z
- 近 30 天下载量：2039（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：25（近 12 个月 0 个）

## 中文简介

Bond- Sports 缓存模块

## 安装

```sh
npm install @bondsports/cache
```

也可以使用：`pnpm add @bondsports/cache`、`yarn add @bondsports/cache`、`bun add @bondsports/cache`

## README

# 缓存

缓存是一个模块,用于在简单的界面下封装一般缓存功能

它提供了两个接口 _基础缓存_ 财务报告和审定财务报表 _简单缓存_

两者的设计都用于缓存含有 `id:number` 用于识别的字段

**基础缓存** 是一个对过程有更大控制权的低层.

**简单缓存** 如果您想要为不同类型对象另设缓存持有人, 则更为合适

## 使用量

`BaseCache`

```typescript
import { BaseCache, MemoryStore } from '@bondsports/cache';

const cache = new BaseCache(new MemoryStore(), console.log, true);

const program = cache.getOrFetchOne('programs', 12, async missingId => ({ id: 12, name: 'program 12' }));

const programs = cache.getOrFetch('programs', [12, 13], async missingIds => [
    { id: 12, name: 'program 12' },
    { id: 13, name: 'program 13' },
]);

cache.invalidateOne('programs', 12);
cache.invalidate('programs', [13]);
```

`SimpleCache`

```typescript
import { BaseCache, MemoryStore } from '@bondsports/cache';

const cache = new SimpleCache(new MemoryStore(), 'programs', async missingIds => [
    { id: 12, name: 'program 12' },
    { id: 13, name: 'program 13' },
]);

const program = cache.getOrFetchOne(12);

const programs = cache.getOrFetch([12, 13]);

cache.invalidateOne(12);
cache.invalidateAll();
```

`SimpleCache with Redis as a store`

```typescript
import { RedisClientType, createClient } from '@redis/client';
import { RedisStore } from '@bondsports/cache';

const client = createClient({ url: 'redis://localhost:6379' });
const store = new RedisStore(client, 1000);
const cache = new SimpleCache(store, 'programs', async missingIds => [
    { id: 12, name: 'program 12' },
    { id: 13, name: 'program 13' },
]);

const program = cache.getOrFetchOne(12);

const programs = cache.getOrFetch([12, 13]);

cache.invalidateAll();
```

`SimpleCache with Redis as a store`

```typescript
import { RedisClientType, createClient } from '@redis/client';
import { RedisStore } from '@bondsports/cache';

const client = createClient({ url: 'redis://localhost:6379' });
const store = new RedisStore(client, 1000);
const cache = new SimpleCache(store, 'programs', async missingIds => [
    { id: 12, name: 'program 12' },
    { id: 13, name: 'program 13' },
]);

const program = cache.getOrFetchOne(12);

const programs = cache.getOrFetch([12, 13]);
```

## 常见问题

### @bondsports/cache 是什么？

Bond- Sports 缓存模块

### 如何安装 @bondsports/cache？

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

### @bondsports/cache 支持 TypeScript 吗？

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

### @bondsports/cache 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @bondsports/cache 可以商用吗？

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

### @bondsports/cache 的下载量有多少？

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

### @bondsports/cache 还在维护吗？

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

