# nest-api-cache

> 使用redis实现nestjs接口层面的缓存

Latest version **0.1.0** (published 2021-04-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install nest-api-cache
pnpm add nest-api-cache
yarn add nest-api-cache
bun add nest-api-cache
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.0 |
| Published | 2021-04-25 |
| First published | 2021-03-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 327.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | kuangshp@126.com |
| Maintainers | kuangshp |
| Keywords | redis, nestjs, typescript, nest-api-cache, 缓存, 接口缓存 |

## Links

- npm: https://www.npmjs.com/package/nest-api-cache
- Homepage: https://github.com/kuangshp/nest-api-cache
- npm.io page: https://npm.io/package/nest-api-cache

## Dependencies (2)

- [ioredis](https://npm.io/package/ioredis.md) ^4.24.5
- [@types/ioredis](https://npm.io/package/@types/ioredis.md) ^4.22.2

## Alternatives

- [memory-cache](https://npm.io/package/memory-cache.md) — 795.0K weekly downloads
- [@httptoolkit/proxy-agent](https://npm.io/package/@httptoolkit/proxy-agent.md) — 11.2K weekly downloads
- [express-cache-controller](https://npm.io/package/express-cache-controller.md) — 5.3K weekly downloads
- [http-cache-middleware](https://npm.io/package/http-cache-middleware.md) — 4.5K weekly downloads
- [cache2](https://npm.io/package/cache2.md) — 1.5K weekly downloads

## Recent versions

- 0.1.0 (latest) — 2021-04-25
- 0.0.9 — 2021-03-31
- 0.0.8 — 2021-03-31
- 0.0.7 — 2021-03-31
- 0.0.6 — 2021-03-31
- 0.0.5 — 2021-03-31
- 0.0.4 — 2021-03-31
- 0.0.3 — 2021-03-31
- 0.0.2 — 2021-03-31
- 0.0.1 — 2021-03-31

## README

<p align="center">
  <a href="http://nestjs.com/" target="blank"><img src="https://nestjs.com/img/logo_text.svg" width="320" alt="Nest Logo" /></a>
</p>

## 一、关于本包

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

## 二、使用方式

* 安装依赖包

  ```properties
  npm install nest-api-cache
  ```

* 在`app.module.ts`中导入模块

  ```typescript
  import { NestApiCacheModule} from 'nest-api-cache';
  
  @Module({
    imports: [
      // 参数可选，第一个参数是redis的连接参数
      NestApiCacheModule.forRoot({ redisConfig: {}, redisEXSecond:10}),
    ]
  })
  ```

* 在需要走`redis`的接口上加上自定义装饰器

  ```typescript
  import { NestCacheApi } from 'nest-api-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(2 * 60) 设置2分钟
  // 不传递过期时间,系统默认以1分钟过期
  @NestCacheApi()
  @Get()
  async roleList(
    @Query() roleReqDto: RoleReqDto,
  ): Promise<RoleListResDtoDto> {
    return await this.roleService.roleList(roleReqDto);
  }
  ```

---
_Source: https://npm.io/package/nest-api-cache · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
