ASP.NET Core提供了多种缓存选项,包括内存缓存、分布式缓存和响应缓存。下面是一些常见的代码示例:
// 在Startup.cs文件中的ConfigureServices方法中添加以下代码
public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();
// ...
}
// 在Controller或其他地方使用内存缓存
private readonly IMemoryCache _memoryCache;
public MyController(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
public IActionResult MyAction()
{
string cacheKey = "myCacheKey";
string cachedValue;
if (!_memoryCache.TryGetValue(cacheKey, out cachedValue))
{
// 缓存中没有该键对应的值,执行获取数据的操作
cachedValue = GetDataFromDataSource();
_memoryCache.Set(cacheKey, cachedValue, TimeSpan.FromMinutes(10)); // 设置缓存,并指定过期时间
}
return View(cachedValue);
}
// 在Startup.cs文件中的ConfigureServices方法中添加以下代码
public void ConfigureServices(IServiceCollection services)
{
services.AddStackExchangeRedisCache(options =>
{
options.Configuration = "localhost:6379"; // Redis服务器的连接字符串
options.InstanceName = "MyCache"; // 缓存实例的名称
});
// ...
}
// 在Controller或其他地方使用分布式缓存
private readonly IDistributedCache _distributedCache;
public MyController(IDistributedCache distributedCache)
{
_distributedCache = distributedCache;
}
public IActionResult MyAction()
{
string cacheKey = "myCacheKey";
string cachedValue;
byte[] cachedBytes = _distributedCache.Get(cacheKey);
if (cachedBytes == null)
{
// 缓存中没有该键对应的值,执行获取数据的操作
cachedValue = GetDataFromDataSource();
_distributedCache.Set(cacheKey, Encoding.UTF8.GetBytes(cachedValue), new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10) // 设置过期时间
});
}
else
{
cachedValue = Encoding.UTF8.GetString(cachedBytes);
}
return View(cachedValue);
}
// 在Controller的Action中使用响应缓存
[ResponseCache(Duration = 3600)] // 缓存响应结果1小时
public IActionResult MyAction()
{
string cachedValue = GetCachedData(); // 获取缓存数据的方法
if (cachedValue != null)
{
return Ok(cachedValue);
}
// 缓存中没有数据,执行获取数据的操作
string newData = GetDataFromDataSource();
SetCachedData(newData); // 将数据存入缓存的方法
return Ok(newData);
}
以上是一些常见的ASP.NET Core缓存的代码示例。根据具体需求和情况,可以选择适合的缓存选项和配置。