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 分摊压力吧,具体参考后面文章

相关推荐
爱丶不疚3 天前
Electron:Module 与 Service 的职责边界与加载时序编排
前端·electron·nestjs
沐沐师12 天前
Nest.js 微服务入门教程
微服务·nestjs
沐沐师12 天前
Redis 入门教程
redis·nestjs
谷无姜12 天前
QuizForge:在不停踩坑后的技术决策复盘
前端·nestjs
Flynt14 天前
NestJS 12升级踩坑:从Webpack到Rspack,我折腾了一整个周末
typescript·node.js·nestjs
张洪权15 天前
nest.js websocket 群聊----私聊功能
前端·nestjs
用户712828968446716 天前
NestJS 发布v12版本,看一下有哪些改动
nestjs
YIAN21 天前
NestJS 入门核心梳理:模块化架构、装饰器与依赖注入
后端·nestjs
半个落月22 天前
NestJS 入门实战:从工厂模式到 Todo CRUD,讲透模块化、依赖注入与测试
后端·nestjs
浮生望23 天前
NestJS MVC 实战:模块化架构、CRUD 全流程与标准化错误处理
nestjs