0.1.3 • Published 3 years ago

nest-redis-cache v0.1.3

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

一、关于本包

本项目基于 nest-api-cache 改动,装饰器添加额外参数&修复连接旧版本redis失败问题

这个包借助了redis的缓存机制,借用Nestjs的自定义装饰器,我们在需要走redis缓存的接口上加上自定义装饰器,然后在Nestjs中的拦截器中对数据进行处理,如果该接口需要走redis缓存就会先判断redis缓存中是否已经存在数据,如果存在就直接返回,没有redis缓存就继续走到控制器,然后对数据库IO操作。针对于访问频繁的接口,可以加上这个装饰器,减少数据库IO操作,从而提高接口响应速度,在使用本包的前提是要有redis

二、使用方式

  • 安装依赖包

    npm install nest-redis-cache
  • app.module.ts中导入模块

    import { NestApiCacheModule} from 'nest-redis-cache';
    
    @Module({
      imports: [
        // 参数可选,第一个参数是redis的连接参数
        NestApiCacheModule.forRoot({ redisConfig: {}, redisEXSecond:10}),
      ]
    })
  • 在需要走redis的接口上加上自定义装饰器

    import { NestCacheApi } from 'nest-redis-cache';
    ...
    @ApiOperation({
      summary: '查询角色列表',
      description: '查询角色',
      externalDocs: {
        url: 'xx?pageSize=10&pageNumber=1&name=x&status=0'
      }
    })
    @ApiCreatedResponse({
      type: RoleResDto,
      isArray: true,
      description: '分页查询角色返回值'
    })
    @HttpCode(HttpStatus.OK)
    // 加上这个自定义装饰器,可以告知拦截器这个接口要走缓存,
    // 如果需要设置缓存时间可以手动加入过期时间@NestCacheApi({exSecond: 2 * 60, key: 'test'}) 设置2分钟
    // 并设置redis key后缀为test 默认前缀为 request.method
    // redis key默认为 request.method+url
    // 不传递过期时间,系统默认以1分钟过期
    @NestCacheApi({exSecond: 2 * 60, key: 'test'})
    @Get()
    async roleList(
      @Query() roleReqDto: RoleReqDto,
    ): Promise<RoleListResDtoDto> {
      return await this.roleService.roleList(roleReqDto);
    }