Nestjs服务级缓存
查看Netsjs文档,我可以看到一般的方法是利用CacheInterceptor进行控制器级缓存Nestjs服务级缓存,nestjs,Nestjs,查看Netsjs文档,我可以看到一般的方法是利用CacheInterceptor进行控制器级缓存 我希望实现的是服务/DB级缓存-用例主要用于其他服务所需的静态DB数据,是否有方法扩展提供的缓存模块以从服务中使用?您可以使用此处列出的缓存存储之一: 然后,只需在缓存模块()中注册该存储: 我也在寻找这样做的方法 目前,我通过在服务中注入cacheManager实例并直接使用它,在一些研究的基础上使其工作 import { CACHE_MANAGER, Inject, Injectable } f
我希望实现的是服务/DB级缓存-用例主要用于其他服务所需的静态DB数据,是否有方法扩展提供的缓存模块以从服务中使用?您可以使用此处列出的缓存存储之一: 然后,只需在缓存模块()中注册该存储:
我也在寻找这样做的方法 目前,我通过在服务中注入cacheManager实例并直接使用它,在一些研究的基础上使其工作
import { CACHE_MANAGER, Inject, Injectable } from '@nestjs/common';
@Injectable()
export class MyService {
constructor(
@Inject(CACHE_MANAGER) protected readonly cacheManager
) {}
public async myMethod() {
const cachedData = await this.cacheManager.get(cacheKey);
if (cachedData) return cachedData;
const data = ''; // Do normal stuff here
this.cacheManager.set(cacheKey, data);
return data;
}
}
但我仍在寻找一种方法来创建一个缓存装饰器,该装饰器将包含缓存逻辑,并将函数参数用作缓存键我理解这一点,但一般的缓存方法是使用拦截器,其目的是基于路由而非服务级别缓存控制器结果
import { CACHE_MANAGER, Inject, Injectable } from '@nestjs/common';
@Injectable()
export class MyService {
constructor(
@Inject(CACHE_MANAGER) protected readonly cacheManager
) {}
public async myMethod() {
const cachedData = await this.cacheManager.get(cacheKey);
if (cachedData) return cachedData;
const data = ''; // Do normal stuff here
this.cacheManager.set(cacheKey, data);
return data;
}
}