参考手册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 小时 | 几乎不变 |
相关链接
- 功能指南 -- 如何在应用中集成缓存
- @01mvp/api-client -- API 客户端自带缓存策略