什么时候需要调用services.AddMemoryCache()?

问题描述 投票:0回答:1

我正在编写一些可以从内存缓存中受益的中间件。所以我使用依赖注入来提供一个

IMemoryCache
实例。

public async Task Invoke(HttpContext context, UserManager<ApplicationUser> userManager, IMemoryCache cache)
{
    // Access cache here...
}

这似乎有效,但我有几个问题。

  1. 我发现的说明说要在初始化中调用
    services.AddMemoryCache()
    。但如果我不这样做,它也能正常工作。有人可以告诉我这个方法的作用以及何时需要调用它吗?
  2. 缓存中存储的数据的生命周期是多长?
c# asp.net asp.net-core .net-core
1个回答
0
投票
  1. 它会将其注册到您的 DI 中以便可以使用。
  2. 生命周期将持续到清除为止。可以通过命令或设置缓存项的生存期来清除它。这可以全局或单独完成,如下例所示。
package Microsoft.Extensions.DependencyInjection
package Microsoft.Extensions.Caching.Memory
package Microsoft.Extensions.Caching.Abstractions
// program.cs

// add it without options 
builder.Services.AddMemoryCache();

// set global expiry for memory
builder.Services.AddMemoryCache(opts => new MemoryCacheEntryOptions()
    .SetSlidingExpiration(TimeSpan.FromDays(1))
    .SetAbsoluteExpiration(TimeSpan.FromDays(7))
);

// in your task (only set the absolute)
cache.Set("key", "value", TimeSpan.FromDays(1));
© www.soinside.com 2019 - 2024. All rights reserved.