首页 > 系统相关 >Asp.net core Net6.0 Webapi 项目如何优雅地使用内存缓存

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

时间:2023-12-13 17:01:06浏览次数:40  
标签:Webapi core Asp memCache 缓存 内存 logger net

前言

缓存是提升程序性能必不可少的方法,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;
    }
    

标签:Webapi,core,Asp,memCache,缓存,内存,logger,net
From: https://www.cnblogs.com/JackyGz/p/17899444.html

相关文章

  • .net core 同步锁/异步锁
    一、同步锁privatestaticreadonlyobject_lock=newobject();///同步锁publicvoidTestLock(){lock(_lock){//需要处理的业务Console.Write("输出内容");......
  • net core 异步超时取消机制
    方法一:利用Task.WhenAnynamespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){Console.WriteLine("Hello,World!");CancellationTokenSourcects=newCancellationTokenSource......
  • orchardcore 部署saas系统
    使用orchardcore搭建saas的webhost服务网络托管服务是一种互联网托管服务,允许个人和组织通过万维网访问他们的网站。我们将使用OrchardCoreCMS框架创建一个多租户、SaaS、Web托管服务。1启动VisualStudio,然后“创建新项目”。选择“ASP.NETCoreWebApplication”......
  • NetCore Razor
    生成链接从一个基础controller的area中的方法生成链接到同一controller的另一个方法。当前请求路径像 /Products/Home/CreateHtmlHelper语法:@Html.ActionLink("Go to Product's Home Page", "Index")TagHelper语法:<a asp-action="Index">Go to Product'......
  • 基于.NET Core + Quartz.NET+ Vue + IView开箱即用的定时任务UI
    前言定时任务调度应该是平时业务开发中比较常见的需求,比如说微信文章定时发布、定时更新某一个业务状态、定时删除一些冗余数据等等。今天给大家推荐一个基于.NETCore+Quartz.NET +Vue+IView开箱即用的定时任务UI(不依赖数据库,只需在界面做简单配置):Quartz.NetUI。Quartz.......
  • CS-Script.Core C#通过读取文本实现动态脚本
    安装包 CS-Script.Core 编写脚本  工艺文件1.txtusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingConsoleApp2;//注意不能有命名空间publicclass工艺文件1:IStep{......
  • 你知道如何修改ASP.NET Core默认端口吗?常用5种方法实例演示
    下面针对ASP.NETCore中修改默认端口的五种常用方法的详细示例,分别对应 appsettings.json 配置Kestrel的Endpoint、使用 UseUrls 方法、命令行参数方法、host.json 配置方法和使用Docker的方式。方法一:appsettings.json配置Kestrel的Endpoint在 appsettings.j......
  • .net formwork WebApi 跨域问题
    ASP.NETFormwork Api/ASP.NetCoreApi 做比较。有关 Global.asax、FilterConfig.cs和RouteConfig.cs等都被Program.cs和Startup.cs两个类取而代之.程序中把Program.cs作为Web应用程序的入口,程序启动的时候会调用Startup.cs类。Startup.cs作用就是,对项目......
  • Sitecore Item CURD
    基础CURDDatabasedb=Sitecore.Configuration.Factory.GetDatabase("master");Languagelang=Language.Parse("en");TemplateItemfolderTemplate=db.GetTemplate(" /sitecore/templates/Common/Folder");//获取HomeItemItemhom......
  • windowserver2012服务器部署.net core3.1环境
    一、安装.netcore3.1要先具备这些系统补丁,如果没有则需要安装,这些KB必须按以下顺序安装:(clearcompressionflag.exe、KB2919442、KB2919355、KB2932046、KB2959977、KB2937592、KB2938439、KB2934018)安装过程中需要多次重启生效。最后安装vc_redist.x64.exe)二、.netcore3.......