Nestjs缓存

一、安装

yarn add @nestjs/cache-manager cache-manager

 二、使用

1.在module中注册

import { CacheModule } from '@nestjs/cache-manager';

@Module({
  imports: [CacheModule.register({
     ttl: 5,// 缓存的存活时间,以秒为单位。
     max:10, // 表示缓存中最大允许存储的项数。
     isGlobal: false, // 是否全局使用
  })]
})

2.在service中使用

import { Inject } from '@nestjs/common';
import { Cache } from 'cache-manager';
import { CACHE_MANAGER } from '@nestjs/cache-manager';

// 在类中的使用构造函数
 constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) { }

/*
用法:
1.有缓存吗?没有就创建,有就直接返回。
2.缓存问题:数据可能不同步,可以用定时任务去解决,定时更新
*/

// 例子:
async findAll(findAllDto: FindAllDto) {
    // 获取缓存
    const value = await this.cacheManager.get('user');
    if (value) {
      console.log('user有缓存');
      return value;
    } else {
      console.log('user没有缓存');
      // 添加缓存
      await this.cacheManager.set('user', {
        message: '操作成功',
        data: [
          { id: 1, username: '张三', password: '55555' },
          { id: 2, username: '李四', password: '66666' },
          { id: 3, username: '王五', password: '77777' },
        ],
      });
    }
    // 禁用缓存过期  await this.cacheManager.set('key', 'value', 0);
    // 从缓存中删除  await this.cacheManager.del('key');
    // 清除整个缓存  await this.cacheManager.reset();

    return {
      message: '操作成功',
      data: [
        { id: 1, username: '张三', password: '55555' },
        { id: 2, username: '李四', password: '66666' },
        { id: 3, username: '王五', password: '77777' },
      ],
    };
  }

 ok,缓存就是这么简单使用,你学费了吗?

你可能感兴趣的:(node.js,缓存)