基本需求定义

缓存有两种基本用法,根据需求可大致分为两类:

需求一:缓存一些指定key,在使用的时候获取key里面的内容,key可以根据需求自由定义,按使用情况获取或者删除

需求二:自动缓存接口查询响应内容,如查询某列表或者基本详情信息接口缓存,如 findAll(),getUserInfo(),针对这种nestjs直接有封装

安装

npm install cache-manager
npm install -D @types/cache-manager

导入模块

import { CacheModule, Module } from '@nestjs/common';
import { AppController } from './app.controller';@Module({imports: [CacheModule.register()],controllers: [AppController],
})
export class AppModule {}

直接操作缓存

需求一可以直接操作缓存,一般为 set 设置指定key内容、get 获取指定key、del 删除指定key、reset 重置清空

注入 CACHE_MANAGER

import { Injectable, CACHE_MANAGER, Inject } from '@nestjs/common'
import { Cache } from 'cache-manager'constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}

set操作


//设置一个 key value
await this.cacheManager.set('key', 'value')//设置过期时间
await this.cacheManager.set('key', 'value', { ttl: 1000 })

get操作

const value = await this.cacheManager.get('key')

del操作

await this.cacheManager.del('key')

reset操作

//清空所有key
await this.cacheManager.reset();

自动缓存接口响应

要自动缓存接口查询结果,直接使用nestjs封装好的CacheInterceptor即可,源码分析有个文章也讲得很清楚 :传送门,这里直接讲下基本用法,用起来确实特别简单

缓存指定控制器

@Controller()
@UseInterceptors(CacheInterceptor)
export class AppController {@Get()findAll(): string[] {return [];}
}

全局缓存

如果指定单个比较麻烦,也可以直接全局缓存,不过使用前还是根据实际情况来

import { CacheModule, Module, CacheInterceptor } from '@nestjs/common';
import { AppController } from './app.controller';
import { APP_INTERCEPTOR } from '@nestjs/core';@Module({imports: [CacheModule.register()],controllers: [AppController],providers: [{provide: APP_INTERCEPTOR,useClass: CacheInterceptor,},],
})
export class AppModule {}

全局自定义缓存限制

自动接口缓存一般还是要指定下过期时间和最大缓存数量,在模块注册的时候可以全局自定义一个默认值

CacheModule.register({ttl: 5, // secondsmax: 10, // maximum number of items in cache
});

个性化重写缓存限制

在某个控制器也可以单独定义针对某个控制器的限制时间和一些缓存key

@Controller()
export class AppController {@CacheKey('custom_key')@CacheTTL(20)findAll(): string[] {return [];}
}

【NestJS】内存Caching基本用法相关推荐

  1. SRS性能、内存优化工具用法

    SRS提供了一系列工具来定位性能瓶颈和内存泄漏,这些在./configure && make后的summary中是有给出来用法的,不过不是很方便,所以特地把用法写到这个文章中. 文中所 ...

  2. threadlocal内存泄露_ThreadLocal用法详解和原理

    一.用法 ThreadLocal用于保存某个线程共享变量:对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量. 1.Thr ...

  3. 内存共享CreateFileMapping用法

    感觉这篇文章写得比较详细 http://blog.csdn.net/csafu/article/details/8602142 CreateFileMapping的MSDN翻译和使用心得    测试创 ...

  4. tinyxml 内存泄露_tinyxml 用法

    场景说明:创建一个空的xml文件,要求格式如下: 代码如下: TiXmlElement *RootElement = NULL; TiXmlDocument *pDoc = NULL; pDoc = ...

  5. 深入探讨PHP中的内存管理问题

    一. 内存 在PHP中,填充一个字符串变量相当简单,这只需要一个语句"<?php $str = 'hello world '; ?>"即可,并且该字符串能够被自由地修改 ...

  6. 如何将SQL Server表驻留内存和检测

    将SQL Server数据表驻留内存是SQL Server提供的一项功能,在一般小型系统的开发过程中估计很少会涉及到.这里整理了相关文档资料,演示如何把SQL Server中一个表的所有数据都放入内存 ...

  7. android内存池,两种常见的内存管理方法:堆和内存池

    描述 本文导读 在程序运行过程中,可能产生一些数据,例如,串口接收的数据,ADC采集的数据.若需将数据存储在内存中,以便进一步运算.处理,则应为其分配合适的内存空间,数据处理完毕后,再释放相应的内存空 ...

  8. Redis+Mysql模式和内存+硬盘模式的异同

    学习任何新知识,都是一个循序渐进的过程,从刚开始的懵懂无知,到简单熟悉,然后突然的彻悟,成果让人欣喜若狂,心情也会快乐很久. redis+mysql和内存+硬盘类似的地方 首先看图 首先,我们知道,m ...

  9. linux 内存被修改,linux 查询内存(linux 修改 openfiles)

    linux 查询内存(linux 修改 openfiles) 2020-07-24 11:09:44 共10个回答 下面是一个可供选择的,但并不全面的图形或命令行工具列表,这些工具用来检查Linux平 ...

最新文章

  1. jquery遍历json与数组方法总结each()
  2. Simulink仿真 第五节 复用器和分路器
  3. 信息检索及信息过滤方法概述
  4. jQuery EasyUI使用教程之基本的拖放
  5. Xcode7 添加PCH文件
  6. python 主线程_Python threading多线程模块
  7. 教师节快乐!Python无限弹窗,让老师们感受到你对他们的爱
  8. web mis系统构建
  9. Oracle_视图_索引_plsql_游标_存储过程_存储函数_触发器
  10. 微信小程序实时音视频功能简析(live-pusher与live-player)
  11. 标准差np.std()
  12. 哪些语句在python中非法_下列语句中,在Python中是非法的
  13. like功能以及check功能
  14. Python爬虫入门教程 40-100 博客园Python相关40W博客抓取 scrapy
  15. 寒衣节的由来和习俗,你知道吗?
  16. Hbase葱岭探秘--JavaApi实践
  17. vue3 vue-seamless-scroll
  18. python的var是什么意思_python3函数里var是什么意思?
  19. c++ 读写 .flo 文件
  20. 计算机理论之父是哪位,计算机之父指的是谁 计算机之父是谁

热门文章

  1. 单位系统被黑客入侵,怎么应对?
  2. Android 13 返回导航大变更:返回键彻底废弃 + 可预见型返回手势
  3. NKOJ-3213 牧草鉴赏家
  4. html触发条件,如何触发css3动画
  5. Android应用开发揭秘(奋斗之小鸟)_PDF 电子书
  6. kindeditor 加载 html,kindeditor配置
  7. 二麻子,你再不更新我就……
  8. 计算机考研张雪峰,张雪峰:这4类大学生不建议考研,与其辛苦考研不如直接就业!...
  9. Windows 配置coreseek 学习日志
  10. MinGW、MSYS、Cygwin、Git Bash Shell