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

IMemoryCache的AbsoluteExpirationRelativeToNow不生效问题求助

IMemoryCache的AbsoluteExpirationRelativeToNow不生效问题求助

各位大佬,想请教个IMemoryCache的棘手问题。我现在需要把一个access token存在内存里,因为这个token获取后24小时才会过期,用内存缓存的话能避免频繁调用接口取新token。

我已经在服务里注入了IMemoryCache,还写了个GetAccessToken方法,每次业务逻辑需要用token的时候就调用这个方法:

private async Task<string> GetAccessToken() 
{
    if (!_cacheService.TryGetValue(TokenKey, out string token)) 
    {
        var newToken = await DoGetAccessToken();
        // 这里设置24小时后自动过期
        _cacheService.Set(TokenKey, newToken, new MemoryCacheEntryOptions()
        {
            AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(24)
        });
        token = newToken;
    }
    return token;
}

但实际运行起来发现,这个AbsoluteExpirationRelativeToNow的设置完全没按预期工作——要么token还没到24小时就被缓存清掉了,得重新去拿;要么过了24小时居然还能取到旧token,导致接口直接报错。

我自己先排查了几个点:

  • TokenKey是固定的常量,绝对没有拼写错误
  • DoGetAccessToken能正确获取到有效的新token,这部分逻辑没问题
  • 服务进程全程没重启过,排除了进程重启导致缓存丢失的情况

有没有大佬遇到过类似的坑?或者我哪里的写法有问题?麻烦指点下,万分感谢!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 13:28:15