Dotnet Core AddMemoryCache

前言

通过减少生成内容所需的工作,缓存可以显着提高应用程序的性能和可伸缩性。缓存最适用于不经常更改的数据。缓存生成的数据副本可以比原始源更快地返回。您应该编写并测试您的应用程序,以便永远不依赖于缓存数据。

ASP.NET Core支持几种不同的缓存。最简单的缓存基于IMemoryCache,它表示存储在Web服务器内存中的缓存。在多个服务器的服务器场上运行的应用程序应确保在使用内存缓存时会话是粘滞的。粘性会话确保来自客户端的后续请求都转到同一服务器。例如,Azure Web应用程序使用应用程序请求路由(ARR)将所有后续请求路由到同一服务器。

Web场中的非粘性会话需要分布式缓存以避免缓存一致性问题。对于某些应用程序,分布式缓存可以支持比内存缓存更高的扩展。使用分布式缓存将缓存内存卸载到外部进程。

内存缓存可以存储任何对象;分布式缓存接口仅限于byte []。

(以上摘自官方文档)

使用IMemoryCache

在使用IMemoryCache之前需要添加引用,在程序包管理控制台中执行命令安装依赖包:

Install-Package Microsoft.Extensions.Caching.Memory
在ConfigureServices中添加服务:

public void ConfigureServices(IServiceCollection services)
{
services.AddMemoryCache();

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

}
在Controller中添加构造方法,声明IMemoryCache请求参数:

[Route("api/[controller]")]
[ApiController]
public class ValueController : ControllerBase
{
private IMemoryCache _cache;

public ValueController(IMemoryCache memoryCache)
{
    _cache = memoryCache;
}

}
将数据保存到IMemoryCache中:

[HttpGet]
public ActionResult Set()
{
var user = new User
{
Id = 1,
Name = "小李"
};

var key = "key";
_cache.Set(key, user);

return true;

}
设置过期时间:

_cache.Set(key, user, new MemoryCacheEntryOptions()
// 设置相对过期时间为5分钟
.SetSlidingExpiration(TimeSpan.FromMinutes(5)));

_cache.Set(key, user, new MemoryCacheEntryOptions()
// 设置绝对过期时间为5分钟
.SetAbsoluteExpiration(TimeSpan.FromMinutes(5)));
获取数据:

[HttpGet]
public ActionResult Get()
{
var key = "key";
var user = _cache.Get(key);

return user;

}

posted @ 2020-08-15 22:37  清風2022  阅读(672)  评论(0)    收藏  举报