我使用MemoryCache库在ASP.NET核心项目中创建缓存,遵循Microsoft (https://learn.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-6.0)。问题是,当缓存满时,我尝试在缓存中添加一个新元素(使用Set()函数),它从缓存中删除一个元素,而不添加新元素。此外,根据库删除缓存中存在的元素的情况还不清楚,它似乎是随机的,而不是基于元素的生命周期。我还尝试用相同的优先级(CacheItemPriority.Normal)设置缓存中的所有元素。我怎样才能解决这个问题?
var calendarCacheEntryOptions = new MemoryCacheEntryOptions()
.SetSlidingExpiration(TimeSpan.FromSeconds(120))
.SetAbsoluteExpiration(DateTime.Now.AddSeconds(3600))
.SetPriority(CacheItemPriority.Normal)
.SetSize(1);
_calendarCache.Set(id, hashCode, calendarCacheEntryOptions);
发布于 2022-05-26 00:11:39
在同样的链接中,它将接着描述:过期不会发生在后台。没有能够主动扫描缓存中过期项的计时器。缓存中的任何活动(Get、Set、Remove)都可以触发对过期项的后台扫描。您可能希望重新评估您的大小(或如果您完全需要调整大小)或绝对过期值。
https://stackoverflow.com/questions/72344989
复制相似问题