You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS CacheManager控制器级TTL未覆盖默认值问题

问题解决:NestJS CacheManager缓存TTL未按预期生效

问题原因

你调用cacheManager.set()时传入的TTL值20是毫秒单位,而非你预期的秒。NestJS CacheManager默认使用的内存存储驱动,会将TTL数值解析为毫秒,所以20毫秒几乎瞬间过期,看起来像是默认的5秒TTL在生效。

修复代码

将TTL值转换为对应毫秒数(20秒即20 * 1000),修改后的控制器代码如下:

@Get()
async getAppConfig() {
  // 传入20秒对应的毫秒数
  await this.cacheManager.set('config', 'value...', 20 * 1000);
}

如果需要显式指定TTL配置,也可以用对象形式传入(默认内存驱动仍按毫秒处理):

@Get()
async getAppConfig() {
  await this.cacheManager.set('config', 'value...', { ttl: 20 * 1000 });
}

全局缓存配置补充

若要统一全局默认TTL或调整相关配置,可在CacheModule注册时设置:

@Module({
  imports: [
    CacheModule.register({
      isGlobal: true,
      ttl: 5 * 1000, // 全局默认TTL(毫秒)
      max: 100 // 缓存最大条目数
    })
  ]
})

内容的提问来源于stack exchange,提问作者Raja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:41:31