nestjs-typeorm缓存cache

前言

开发中,一些访问高的功能,可能会遇到瓶颈,正常来说升级服务器即可,如果不这样,那么我们则可以通过缓存优化的方式,来减少我们的数据库服务器压力

缓存 cache

缓存 cache 是一个性能优化手段,对于内容不经常改变,查询相同时,则会以缓存代替对数据库的查询,以提升效率,默认缓存为 1000ms,即 1s,例如:我们可以用此功能来完成排行榜功能,将会提高效率(不用每次都重新排序计算)

这个缓存默认是数据库类型,访问的是数据库,会额外创建一个缓存表,里边保存查询条件、时间、内容等数据,访问前会先根据查询条件到对应的缓存表中查找,找到没过期直接返回,否则使用新的查询,redis则是使用redis存储表结构没什么变化

js 复制代码
下面查询语句只需要加上 cache 即可使用缓存功能
let user = await this.userRepository.findOne({
    ...
    cache: true, //可以传递数字,单位ms
});

ps: QueryBuilder 中也类似,就不多介绍了

配置 cache 缓存类型(数据库)

使用前还需要,将数据库初始化操作中的 cache 打开,如果之前没有打开 cache 记得同步一下即可,毕竟默认缓存使用的是数据库表结构形式的缓存,可以设置过期时间

js 复制代码
TypeOrmModule.forRoot({
      type: 'mysql',
      synchronize: true, //自动同步创建数据库表
      autoLoadEntities: true, //自动查找entity实体
      ...
      cache: true, //允许使用cache,默认 database 类型
}),

其默认使用一个名为query-result-cache的单独表,并在那里存储所有查询结果,tableName 属性可以改表名

js 复制代码
cache: {  
    type: "database",  
    duration: 30000, //默认是1s,这里案例设置30s
    tableName: "configurable-table-query-result-cache"  
}

如果不想额外配置,这个相对来说已经很好用了,如果还想追求速度,可以使用下面介绍的 redis

配置 cache 缓存类型为 redis

不多说,得额外配置redis,跟人配置好了,另一个redis都连接成功操作了,这个告诉我连接本地 redis 失败,看着非常不好用

因此写好的案例,我直接就删了,还不如后面直接手动使用 redis 哈,这里先忽略它吧,知道有他就行,使用也简单,后面文章介绍 redis 的配置和使用

最后

一般来说直接使用数据库缓存就行了,如果数据库遇到瓶颈,只能用redis,那么就上 redis 分摊压力吧,具体参考后面文章

相关推荐
全栈王校长2 天前
Nest IoC 依赖注入 - 一次彻底讲明白
nestjs
全栈王校长2 天前
前端转后端?用 Vue 的思维学 NestJS,真香!
nestjs
当时只道寻常3 天前
NestJS Redis 原子限流守卫 防刷防攻击
后端·nestjs
踩着两条虫3 天前
VTJ.PRO 在线应用开发平台的Open API 与外部集成
低代码·ai编程·nestjs
www_stdio4 天前
🚀 从 Event Loop 到 AI Agent:我的 Node.js 全栈进阶之路
前端·node.js·nestjs
Bigger4 天前
🚀 开源发布!从 0 到 1,使用 Next.js + Nest.js 构建全栈自动化数据分析 AI Agent
agent·nestjs·next.js
踩着两条虫6 天前
VTJ.PRO 在线应用开发平台的数据库与基础设施
数据库·架构·nestjs
踩着两条虫7 天前
VTJ.PRO 在线应用开发平台的后端模块系统
后端·架构·nestjs
踩着两条虫7 天前
VTJ.PRO 在线应用开发平台的业务模块(应用、DSL、模板、订单、智能体、技能)
后端·agent·nestjs
踩着两条虫7 天前
VTJ.PRO 在线应用开发平台的核心模块(用户、认证、RBAC、缓存、设置)
后端·低代码·nestjs