【发布时间】:2019-12-30 09:15:44
【问题描述】:
我使用 .NETCore 2.0 创建了一个 API;该 API 连接到 oracle 数据库以检索所需数据;其中一个功能需要太多时间,所以我决定使用缓存来更快地检索数据;
功能说明:获取排名
缓存周期:数据应在每周一更新缓存内存
我正在使用IMemoryCache,但问题是数据没有被缓存多天;在从数据库中检索数据并且花费太多时间(10 秒)之后,它只持续一小时;以下是我的代码:
var dateNow = DateTime.Now;
int diff = 7; // if today is Monday then should add 7 days to get next Monday date
if (dateNow.DayOfWeek != DayOfWeek.Monday) {
var daysToStartWeek = dateNow.DayOfWeek - DayOfWeek.Monday;
diff = (7 - (daysToStartWeek)) % 7;
}
var nextMonday = dateNow.AddDays(diff).Date;
var totalDays = (nextMonday - dateNow).TotalDays;
if (_cache.TryGetValue("GetRanking", out IEnumerable<GetRankingStruct> objRanking))
{
return Ok(objRanking);
}
var dp = new DataProvider(Configuration);
var response = dp.GetRanking(userName, asAtDate);
_cache.Set("GetRanking", response, TimeSpan.FromDays(diff));
return Ok(response);
可能与令牌生命时间有关,因为它只有 1 小时?
【问题讨论】:
标签: caching .net-core memorycache