TypeScript中的缓存:node-cache库

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 node-cache 以及为什么需要它?

node-cache 库是一个用 TypeScript 编写的简单快速的 Node.js 缓存系统。它允许将数据存储在内存中(in-memory cache),从而显著加快对频繁请求信息的访问速度(例如,数据库查询结果、API 响应、计算结果)。在 TypeScript 中,node-cache 提供了严格的类型化,使代码更加可预测和安全。

缓存对于降低服务器负载、减少响应时间以及在重复操作中节省资源是必要的。Node-cache 非常适合中小型项目,这些项目不需要分布式缓存(如 Redis),但需要一个轻量级的内存缓存。

安装

通过 npm 或 yarn 安装包:

npm install node-cache
# 或
yarn add node-cache

对于 TypeScript,类型已包含在包中,无需额外安装 @types。

主要功能

  • set(key, value, ttl) — 根据键保存值,并可选设置以秒为单位的生存时间(TTL)。
  • get(key) — 根据键获取值。如果键不存在或已过期,则返回 undefined。
  • del(key) — 删除一个或多个键。
  • has(key) — 检查缓存中是否存在键。
  • flushAll() — 清空整个缓存。
  • getStats() — 返回统计信息(键数量、命中次数、未命中次数)。

TypeScript 代码示例

import NodeCache from 'node-cache';

// 创建一个默认 TTL 为 60 秒的缓存实例
const myCache = new NodeCache({ stdTTL: 60 });

// 类型化值
interface User {
id: number;
name: string;
}

// 保存数据
const user: User = { id: 1, name: 'Alice' };
myCache.set('user_1', user);

// 获取数据
const cachedUser = myCache.get<User>('user_1');
if (cachedUser) {
console.log(cachedUser.name); // Alice
} else {
console.log('缓存为空');
}

// 检查是否存在
console.log(myCache.has('user_1')); // true

// 删除
myCache.del('user_1');

// 清空整个缓存
myCache.flushAll();

何时使用 node-cache

  • 频繁请求的数据:例如,国家列表、货币汇率、配置信息。
  • 繁重计算的结果:将昂贵操作的结果缓存几秒钟。
  • API 网关:缓存外部 API 的响应以减少延迟和限制。
  • 会话:临时存储会话数据(如果不需要持久性)。

如果您需要在多个服务器之间进行分布式缓存,请避免使用 node-cache——在这种情况下,最好使用 Redis。它也不适合存储大量数据(超过 1-2 GB),因为数据存储在 RAM 中。

Node-cache 是 TypeScript 中简单缓存场景的绝佳选择,在这些场景中,速度和最小配置至关重要。

推荐