Nestjs服务级缓存

Nestjs服务级缓存,nestjs,Nestjs,查看Netsjs文档,我可以看到一般的方法是利用CacheInterceptor进行控制器级缓存 我希望实现的是服务/DB级缓存-用例主要用于其他服务所需的静态DB数据,是否有方法扩展提供的缓存模块以从服务中使用?您可以使用此处列出的缓存存储之一: 然后,只需在缓存模块()中注册该存储: 我也在寻找这样做的方法 目前,我通过在服务中注入cacheManager实例并直接使用它,在一些研究的基础上使其工作 import { CACHE_MANAGER, Inject, Injectable } f

查看Netsjs文档,我可以看到一般的方法是利用CacheInterceptor进行控制器级缓存


我希望实现的是服务/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;
  }
}