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
相关产品推荐
相关产品推荐

