ASP.NET Core应用程序中如何在控制器外部访问和使用内存缓存(IMemoryCache)?
2.1K 次浏览
在ASP.NET Core应用程序编程开发中,官方内置了基于内存的数据缓存实现,使用内存缓存也非常方便,只需要安装Microsoft.Extensions.Caching.Memory
包,并在Startup.cs
配置services.AddMemoryCache();
即可,如:
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
}
控制器使用示例:
[Route("api/[controller]")]
public class MyExampleController : Controller
{
private IMemoryCache _cache;
public MyExampleController(IMemoryCache memoryCache)
{
_cache = memoryCache;
}
[HttpGet("{id}")]
public string Get(string id)
{
var cacheEntryOptions = new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(1));
_cache.Set("key", "value", cacheEntryOptions);
}
}
但如果我需要一个控制器外部的类中访问同一个缓存实例,比如在一个定时任务调度服务中访问这个内存缓存实例,应该如何实现呢?
比如:
public class ScheduledStuff
{
public void RunScheduledTasks()
{
// 这里如何访问和控制器中一样的内存缓存实例呢?
}
}