一、安装
yarn add @nestjs/cache-manager cache-manager
二、使用
1.在module中注册
import { CacheModule } from '@nestjs/cache-manager';
@Module({
imports: [CacheModule.register({
ttl: 60000,// 缓存的存活时间,以毫秒为单位。(4版本以秒为单位,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,缓存就是这么简单使用,你学费了吗?