Asp.net core Net6.0 Webapi 项目如何优雅地使用内存缓存

发布时间 2023-12-13 16:58:49作者: 快乐代码狗

前言

缓存是提升程序性能必不可少的方法,Asp.net core 支持多级缓存配置,主要有客户端缓存、服务器端缓存,内存缓存和分布式缓存等。其中客户端缓和服务器端缓存在使用上都有比较大的限制,而内存缓和分布式缓存则比较灵活。

内存缓存就是一种把缓存数据放到应用程序内存中的机制。

本篇主要讲解在 asp.net core webapi 项目中如何使用内存缓存。

使用步骤

  1. 打开 Program.cs 文件

  2. 在语句 var app = builder.Build(); 之前注册内存缓存服务

    var builder = WebApplication.CreateBuilder(args);
    ......
    builder.Services.AddMemoryCache();
    ......
    var app = builder.Build();
    
  3. 打开控制器文件,如 Test1Controller.cs

  4. 引入内存缓存命名空间

    using Microsoft.Extensions.Caching.Memory;
    
  5. 在构造方法注入内存缓存服务,如:

    private readonly ILogger<Test1Controller> logger;
    private readonly IMemoryCache memCache;
    
    public Test1Controller(
    	ILogger<Test1Controller> logger,
    	IMemoryCache memCache)
    {
    	this.logger = logger;
    	this.memCache = memCache;
    }
    
  6. 通过内存缓存的 GetOrCreateAsync 方法获取和缓存数据,如:

    [HttpGet]
    public async Task<string> GetBooks()
    {
    	logger.LogInformation("开始执行GetBooks");
    	var items = await memCache.GetOrCreateAsync("AllBooks", async (e) => {
    		logger.LogInformation("读取数据");
    		return "My Memory Cache"; //这里可以改为从数据库中读取数据
    	});
    	logger.LogInformation("把数据返回给调用者");
    	return items;
    }