node-cache:Node.js 中简单高效的缓存方案

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

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

开始课程

什么是 node-cache?

node-cache 是一个轻量级库,用于在 Node.js 应用程序中进行内部数据缓存。它作为 in-memory store(内存存储)运行,允许临时保存计算结果、API 响应或数据库数据,从而避免重复执行繁重操作。

为什么在 JavaScript 中需要缓存?

缓存对性能至关重要。没有缓存,每个服务器请求都可能导致重复调用外部服务、数据库查询或复杂计算。node-cache 通过将数据保存在内存中并设置生存时间(TTL)来解决此问题。对于频繁请求的数据,这可将服务器负载降低 2–5 倍,并缩短响应时间。

安装

要安装该库,请在项目根目录中执行以下命令:

npm install node-cache

安装后,在代码中引入模块:

const NodeCache = require('node-cache');

主要功能

  • set(key, value, [ttl]) — 按键保存值,并可选择以秒为单位设置生存时间。
  • get(key) — 返回保存的值,如果未找到键或已过期,则返回 undefined。
  • has(key) — 检查键是否存在(返回 true/false)。
  • del(key) — 删除一个或多个键。
  • flushAll() — 清除所有缓存。
  • keys() — 返回所有活动键的数组。
  • getStats() — 统计信息:hits、misses、keys、ksize 和 vsize。

Node.js 代码示例

const NodeCache = require('node-cache');const myCache = new NodeCache({ stdTTL: 600, checkperiod: 120 });

// 保存数据myCache.set('user_123', { name: 'Alice', role: 'admin' }, 300);

// 提取数据const user = myCache.get('user_123');if (user === undefined) { console.log('缓存为空,从数据库请求');} else { console.log('来自缓存的数据:', user);}

// 统计信息console.log(myCache.getStats());// { hits: 1, misses: 0, keys: 1, ksize: 8, vsize: 32 }

何时使用 node-cache?

该库非常适合以下场景:

  • 缓存 API 响应 — 避免重复请求外部服务(例如天气、汇率)。
  • 繁重计算的结果 — 将数据处理结果保存 5–10 分钟。
  • 会话数据 — 临时存储用户令牌或设置。
  • 微服务之间的中间缓存 — 减少网络调用。

重要提示: node-cache 不适用于分布式系统(仅在一个进程的内存中工作)。对于分布式缓存,请使用 Redis 或 Memcached。

结论

node-cache 是 Node.js 中用于 in-memory 缓存的极简且可靠的解决方案。它无需配置外部服务,易于集成,并能显著加速应用程序。从今天开始,只需添加几行代码即可使用它。

推荐