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

相关推荐
HxY6 天前
Server Sent Event 技术实践
前端·后端·nestjs
浪遏18 天前
大文件上传👈 | React + NestJs |分片、断点续传、秒传🚀 , 你是否知道 ???
前端·面试·nestjs
白日梦想家12261 个月前
【nest系列】之 VO 的配置
nestjs
Junior_FE_20221 个月前
gRPC在Nest中的尝试
后端·nestjs
UOrb1 个月前
手把手从零到一打造在线文档之后端项目搭建
前端·nestjs
东方小月1 个月前
NestJS中如何优雅的实现接口日志记录
前端·后端·nestjs
Running_slave2 个月前
搭建Nestjs+TypeORM+TS服务端应用架构
前端·后端·nestjs
东方小月2 个月前
如何使用GitHub Actions自动部署我们的项目
前端·github·nestjs
泰伦闲鱼2 个月前
nestjs:GET REQUEST 缓存问题
服务器·前端·缓存·node.js·nestjs
求知若饥2 个月前
NestJS 项目实战-权限管理系统开发(六)
后端·node.js·nestjs