ASP.NET Core 支持多个不同的缓存。 最简单的缓存基于 IMemoryCache。
IMemoryCache
表示存储在 Web 服务器内存中的缓存。 在服务器场(多个服务器)中运行的应用应确保在使用内存中缓存时会话是粘滞的。 粘滞会话可确保来自客户端的请求都转到同一服务器。 例如,Azure Web 应用使用应用程序请求路由 (ARR) 将所有请求路由到同一服务器。Web 场中的非粘滞会话需要分布式缓存(如 Redis)来避免缓存一致性问题。
.NET 中有两个MemoryCache类:
- System.Runtime.Caching.MemoryCache
已非推荐, .NET Standard 2.0 或更高版本。使用场景比如:将代码从 ASP.NET 4.x 移植到 ASP.NET Core 时,使用System.Runtime.Caching
/MemoryCache
作为兼容性桥。 - Microsoft.Extensions.Caching.Memory.MemoryCache
推荐使用,因为它更好地集成到 ASP.NET Core 中。 MemoryCache实现IMemoryCache
引自官方说明:ASP.NET Core 中的内存中缓存 | Microsoft Learn
.NET Core中使用MemoryCache
调用自带的AddMemoryCache扩展方法,将IMemoryCache注入容器中,后面便可通过容器获取IMemoryCache的实现MemoryCache对本机内存缓存进行操纵
using Microsoft.Extensions.Caching.Memory;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);
builder.Services.AddMemoryCache(); //会注入IMemoryCache的实现类MemoryCache
using IHost host = builder.Build();
封装内存缓存工具类
以下给出代码,通过对 ICacheTool接口 的两种实现,分别封