参考手册Workspace 包参考

cache 缓存

内存缓存工具,避免重复请求数据库或外部 API

内存缓存在开发环境重启时会清零。如果需要跨进程共享缓存(比如多实例部署),建议配合 Redis 使用。大多数场景下内存缓存已经够用。

这是什么

@01mvp/cache 是项目的内存缓存工具。缓存(Cache)就是把常用的数据临时存在内存里,下次要用的时候直接拿,不用再去数据库或 API 查一遍。

打个比方:你每次问数据库"用户 123 是谁",数据库都得翻一遍记录。如果一分钟内问了一百次,数据库就得翻一百遍。有了缓存,第一次查完就记在内存里,后面 99 次直接拿结果,快很多。

能做什么

  • 设置和获取缓存:存数据时设一个过期时间(TTL = Time To Live,存活时间),过期自动删除
  • 主动刷新缓存:数据更新后可以手动让缓存失效,Next.js 里可以按标签(Tag)或路径(Path)批量刷新
  • 自动清理过期数据:创建缓存时可以设置自动清理间隔,防止内存占用无限增长
  • 监控缓存效果:记录命中/未命中次数,算命中率,优化缓存策略

怎么用

一句话:创建缓存实例 → 存数据(设过期时间)→ 取数据。取的时候如果还在有效期就直接返回,过期了就返回空,你再去数据库查新的。

获取数据时一个常见的模式是"先看缓存有没有,没有再查库,查完存缓存"。

与 Next.js 集成时,可以在 Server Action 里用 revalidateCache({ tags: [...], paths: [...] }) 批量刷新页面缓存。

大概原理

请求数据
  → 查缓存:有没有?过期没?
    → 有且没过期 → 直接返回(命中 hit)
    → 没有或过期了 → 去数据库 / API 查(未命中 miss)
      → 查到了 → 存缓存 + 返回
      → 没查到 → 返回空(可缓存空值防止缓存穿透)

缓存穿透:当大量请求同时查一个不存在的数据,每次都打到数据库上。解决办法是连"空结果"也缓存起来,短期内不重复查。

选多大 TTL

数据类型推荐 TTL说明
实时数据(在线人数等)30-60 秒变化快,短缓存
用户资料5-15 分钟不常改
文章内容30-60 分钟基本不变
系统配置1-24 小时几乎不变

相关链接