Docs: https://docs.nestjs.com/techniques/caching

yarn add @nestjs/mongoose mongoose

yarn add cache-manager

app.module.ts

import { Module, CacheModule } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { MongooseModule } from '@nestjs/mongoose'
import { CatSchema } from './schemas/cat.schema' @Module({
imports: [
CacheModule.register({
ttl: 5, // 缓存更新时间
max: 10
}),
MongooseModule.forRoot('mongodb://localhost/ajanuw', { useNewUrlParser: true }),
MongooseModule.forFeature([
{ name: 'cats', schema: CatSchema }
])
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

cat.schema.ts

import * as mongoose from 'mongoose';

export const CatSchema = new mongoose.Schema({
name: String,
});

app.service.ts

import { Injectable } from '@nestjs/common';
import { Model } from 'mongoose'
import { InjectModel } from '@nestjs/mongoose'
import { Cat } from './interfaces/cat.interface'
@Injectable()
export class AppService {
constructor(
@InjectModel('cats') private readonly catModel: Model<Cat>
){} all(): Promise<any>{
return this.catModel.find().exec()
}
}

cat.interface.ts

import { Document } from 'mongoose'
export interface Cat extends Document {
readonly name: string;
}

app.controller.ts

import { Get, Controller, UseInterceptors, CacheInterceptor } from '@nestjs/common';
import { AppService } from './app.service'; @Controller()
@UseInterceptors(CacheInterceptor)
export class AppController {
constructor(private readonly appService: AppService) {} @Get('all')
all(){
let cats = this.appService.all()
return cats
}
}

存在 Redis当中

yarn add cache-manager-redis-store

app.module.ts

import { Module, CacheModule } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import * as redisStore from 'cache-manager-redis-store' import { MongooseModule } from '@nestjs/mongoose'
import { CatSchema } from './schemas/cat.schema' @Module({
imports: [
CacheModule.register({
store: redisStore,
host: 'localhost',
port: 6379,
ttl: 10, // 缓存更新时间
max: 15,
}),
// CacheModule.register(),
MongooseModule.forRoot('mongodb://localhost/ajanuw', { useNewUrlParser: true }),
MongooseModule.forFeature([
{ name: 'cats', schema: CatSchema }
])
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}

Nestjs 缓存的更多相关文章

  1. GraphQL介绍&使用nestjs构建GraphQL查询服务

    GraphQL介绍&使用nestjs构建GraphQL查询服务(文章底部附demo地址) GraphQL一种用为你 API 而生的查询语言.出自于Facebook,GraphQL非常易懂,直接 ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. 哪种缓存效果高?开源一个简单的缓存组件j2cache

    背景 现在的web系统已经越来越多的应用缓存技术,而且缓存技术确实是能实足的增强系统性能的.我在项目中也开始接触一些缓存的需求. 开始简单的就用jvm(java托管内存)来做缓存,这样对于单个应用服务 ...

  4. ASP.NET Core 中间件之压缩、缓存

    前言 今天给大家介绍一下在 ASP.NET Core 日常开发中用的比较多的两个中间件,它们都是出自于微软的 ASP.NET 团队,他们分别是 Microsoft.AspNetCore.Respons ...

  5. ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core

    背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...

  6. [Java 缓存] Java Cache之 DCache的简单应用.

    前言 上次总结了下本地缓存Guava Cache的简单应用, 这次来继续说下项目中使用的DCache的简单使用. 这里分为几部分进行总结, 1)DCache介绍; 2)DCache配置及使用; 3)使 ...

  7. [原创]mybatis中整合ehcache缓存框架的使用

    mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...

  8. 探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)

    其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...

  9. 深究标准IO的缓存

    前言 在最近看了APUE的标准IO部分之后感觉对标准IO的缓存太模糊,没有搞明白,APUE中关于缓存的部分一笔带过,没有深究缓存的实现原理,这样一本被吹上天的书为什么不讲透彻呢?今天早上爬起来赶紧找了 ...

随机推荐

  1. 如何给webbrowser指定IE版本

    void Button1Click(object sender, EventArgs e)     {         RegistryKey rk = Registry.LocalMachine; ...

  2. 最新版Xamarin Mono For Android、Monotouch 安装、破解(实时同步更新)

    以上链接如不是最新,以官方为主,官方更新地址如下:http://xamarin.com/installer_assets/v3/Mac/Universal/InstallationManifest.x ...

  3. 通过IntelliJ IDEA和Maven命令查看某个jar包是怎么引入的

    发现打包的时候引入的jar包有几百个,如果想知道某个jar包是如何引入的,可以 看Maven Projects,点开某个Module的Dependencies 一层一层展开就可以了 可以直接输入名称高 ...

  4. SuppressLint错误

    解决方法:找到注解包,添加到项目提示重复,去掉后又可以了,很奇怪,不过可以了. 方法2:把eclipse项目关闭重新打开,错误又消失了.

  5. nginx配置实例

    user root root; worker_processes ; #error_log logs/error.log; #error_log logs/error.log notice; #err ...

  6. HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性、非功能性、关键约束)-下篇

    一.开篇 上一篇<HRMS(人力资源管理系统)-从单机应用到SaaS应用-架构分析(功能性.非功能性.关键约束)-上篇>我们详细分析了在架构分析过程中我们需要注意的内容,架构过程的方法论及 ...

  7. C#调用系统打印机和收银钱箱

    打印示例: StringBuilder builder = new StringBuilder();builder.AppendLine("--------------打印测试------- ...

  8. SpUtil多样加密存储,兼容android9.0

    代码地址如下:http://www.demodashi.com/demo/15058.html 前言 在android系统不断升级的过程中,Sharepreferences存储出现多中问题,其中有些是 ...

  9. Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误

    Android报“android.content.res.Resources$NotFoundException: String resource ID #0x2”错误 当调用setText()方法时 ...

  10. Redis 为什么使用单进程单线程方式也这么快(转载)

    Redis 采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由 C 语言编写.官方提供的数据是可以达到100000+的 qps.这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 ...