您可以使用IMemoryCache 实现来缓存数据。这有不同的实现,包括内存缓存、redis、sql 服务器缓存等。
快速简单的实现是这样的
更新您的project.json 文件并在dependencies 部分下添加以下两项。
"Microsoft.Extensions.Caching.Abstractions": "1.0.0-rc1-final",
"Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final"
保存此文件将执行 dnu 恢复,所需的程序集将添加到您的项目中。
进入 Startup.cs 类,通过在 ConfigureServices 方法中调用 services.AddCaching() 扩展方法来启用缓存。
public void ConfigureServices(IServiceCollection services)
{
services.AddCaching();
services.AddMvc();
}
现在您可以通过构造函数注入将IMemoryCache 注入您的 lass。该框架将为您解析一个具体的实现并将其注入您的类构造函数。
public class HomeController : Controller
{
IMemoryCache memoryCache;
public HomeController(IMemoryCache memoryCache)
{
this.memoryCache = memoryCache;
}
public IActionResult Index()
{
var existingBadUsers = new List<int>();
var cacheKey = "BadUsers";
List<int> badUserIds = new List<int> { 5, 7, 8, 34 };
if(memoryCache.TryGetValue(cacheKey, out existingBadUsers))
{
var cachedUserIds = existingBadUsers;
}
else
{
memoryCache.Set(cacheKey, badUserIds);
}
return View();
}
}
理想情况下,您不想在控制器中混合缓存。您可以将其移动到另一个类/层以保持所有内容的可读性和可维护性。你仍然可以在那里进行构造函数注入。
官方asp.net mvcrepo有更多示例供大家参考。