我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在ASP.NET中使用LazyCache

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在ASP.NET中使用LazyCache

怎么在ASP.NET中使用LazyCache?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

LazyCache 是一款基于内存的易于使用和线程安全的缓存组件,值得注意的是,这里的 Lazy 指的是 LazyCache 永远不会在 缓存未命中 时触发一次以上的缓存委托函数,因为内置了锁,换句话说,Lazy 减少了不必要的计算开销,这篇文章我们将会讨论如何在 ASP.NET Core 5.0 中使用 LazyCache。

安装 LazyCache

要想在 ASP.NET Core MVC 5 中使用 LazyCache,你需要安装如下两个 nuget 包。

  • LazyCache

  • LazyCache.AspNetCore

你可以通过 Nuget 可视化工具安装或者通过如下命令进行安装。

PM> Install-Package LazyCache
PM> Install-Package LazyCache.AspNetCore

为什么要缓存?

缓存是一种 状态管理策略,在web应用程序中,它常常用来缓存一些数据到内存中供后续请求复用,这样就规避了原来不得不走硬盘取数据的尴尬,显而易见,缓存是提高 web 程序性能的一大利器,

虽然 ASP.NET Core 缺少内置的 Cache,但它提供了对三种缓存类型的支持:内存缓存,分布式缓存 和 响应缓存。

为什么要使用 LazyCache

LazyCache 是一个开源的,简单的,线程安全的,可扩展的 缓存组件,在底层,LazyCache 使用了 Microsoft.Extensions.Caching 下的 MemoryCache 并使用了 懒锁 来确保 委托 只会执行一次。

如果你想缓存从数据库中取得的数据,复杂的对象图 和 web服务调用,那么使用 LazyCache 是一个非常好的选择,通常默认缓存的时间是 20min。

下面简单罗列了 LazyCache 的一些特点。

  • 可扩展性

  • 开源

  • 友好的 API 接口

  • 内置 lazy 锁

  • 底层使用 MemoryCache

配置 LazyCache

要想配置 LazyCache,可以在 ConfigureServices() 方法中通过调用 AddLazyCache() 将 LazyCache 注入到 ServiceContainer 中,如下代码所示:

  public void ConfigureServices(IServiceCollection services)  {   services.AddLazyCache();   services.AddControllers();  }

这样就可以确保 LazyCache 可以贯穿在你的应用程序中,要想访问 LazyCache 可以通过 IAppCache 接口,定义如下:

 public interface IAppCache {  ICacheProvider CacheProvider { get; }  CacheDefaults DefaultCachePolicy { get; }  void Add<T>(string key, T item, MemoryCacheEntryOptions policy);  T Get<T>(string key);  Task<T> GetAsync<T>(string key);  T GetOrAdd<T>(string key, Func<ICacheEntry, T> addItemFactory);  T GetOrAdd<T>(string key, Func<ICacheEntry, T> addItemFactory, MemoryCacheEntryOptions policy);  Task<T> GetOrAddAsync<T>(string key, Func<ICacheEntry, Task<T>> addItemFactory);  Task<T> GetOrAddAsync<T>(string key, Func<ICacheEntry, Task<T>> addItemFactory, MemoryCacheEntryOptions policy);  void Remove(string key);  bool TryGetValue<T>(string key, out object value); }

将 IAppCache 注入到 Controller 中

一切都配置好之后,接下来就可以将 IAppCache 通过构造函数注入的方式灌到 Controller 中,如下代码所示:

 [ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase {  private readonly IAppCache _lazyCache;  public WeatherForecastController(IAppCache cache)  {   this._lazyCache = cache;  } }

怎么在ASP.NET中使用LazyCache

通过 LazyCache 新增,获取数据

考虑如下返回 list 的 GetData() 方法。

private async Task<List<string>> GetData(){ return new List<string>() {  "Joydip Kanjilal",  "Steve Smith",  "Rick Smith" };}

接下来通过 GetOrAddAsync 方法从缓存获取或添加数据,如下代码所示:

 [ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase {  private readonly IAppCache _lazyCache;  public WeatherForecastController(IAppCache cache)  {   this._lazyCache = cache;  }  [HttpGet]  public async Task<IEnumerable<string>> Get()  {   var data = await _lazyCache.GetOrAddAsync("Authors", GetData, DateTimeOffset.Now.AddMinutes(30));   return data;  }  private async Task<List<string>> GetData()  {   return new List<string>()     {      "Joydip Kanjilal",      "Steve Smith",      "Rick Smith"     };  } }

怎么在ASP.NET中使用LazyCache

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在ASP.NET中使用LazyCache

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在ASP.NET中使用LazyCache

怎么在ASP.NET中使用LazyCache?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。LazyCache 是一款基于内存的易于使用和线程安全的缓存组件,值得
2023-06-14

Lamar怎么在ASP.Net Core项目中使用

这篇文章将为大家详细讲解有关Lamar怎么在ASP.Net Core项目中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么要用 Lamar 实现依赖注入要说 .NET 世界最早的依赖
2023-06-13

怎样在ASP.NET Core中使用HttpClientFactory

本篇内容主要讲解“怎样在ASP.NET Core中使用HttpClientFactory”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎样在ASP.NET Core中使用HttpClientFa
2023-06-14

ASP.NET中request.form怎么使用

在ASP.NET中,Request.Form是一个集合,用于获取由客户端POST方法发送的HTTP请求中包含的表单数据。你可以使用Request.Form集合的索引器来访问特定表单字段的值,如下所示:```csharpstring fiel
2023-08-08

怎么在ASP.NET中使用Http通用扩展库

怎么在ASP.NET中使用Http通用扩展库?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。ASP.NET 是什么ASP.NET 是开源,跨平台,高性能,轻量级的 Web 应用构
2023-06-14

ASP.NET中Ajax怎么使用

ASP.NET中使用Ajax有多种方法,以下是一种常用的方法:1. 首先,在ASP.NET Web Forms项目中,需要引入jQuery库。可以通过在页面的头部添加以下代码来引入jQuery库:```html```2. 在前端页面中定义一
2023-08-14

ASP.NET中Server.MapPath怎么使用

在ASP.NET中,Server.MapPath方法用于将虚拟路径映射到物理文件路径。使用Server.MapPath方法的一般语法如下:```Server.MapPath(path)```其中,path是一个相对于当前页面的虚拟路径,也可
2023-09-26

asp.net中viewState怎么使用

在ASP.NET中,ViewState是用于在页面回发时存储页面的状态信息的一种机制。要使用ViewState,需要进行以下步骤:1. 在页面或控件的代码中设置EnableViewState属性为true。默认情况下,EnableViewS
2023-09-13

asp.net中CodeSmith怎么使用

CodeSmith是一个代码生成工具,可以帮助开发人员快速生成代码。在ASP.NET中使用CodeSmith可以按照以下步骤进行:1. 下载并安装CodeSmith。可以从CodeSmith官方网站下载安装程序,并按照提示进行安装。2. 打
2023-09-26

ASP.NET Core在WebApi项目中怎么使用Cookie

这篇文章主要讲解了“ASP.NET Core在WebApi项目中怎么使用Cookie”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET Core在WebApi项目中怎么使用Cook
2023-06-29

ASP.Net中EnableViewState怎么使用

在ASP.Net中,EnableViewState属性用于指定是否启用ViewState机制来跟踪页面的状态。默认情况下,EnableViewState属性被设置为true。如果要在ASP.Net页面中禁用ViewState,可以将Enab
2023-09-26

在ASP.NET Core中怎么使用HTTP标头传播

这篇文章主要介绍“在ASP.NET Core中怎么使用HTTP标头传播”,在日常操作中,相信很多人在在ASP.NET Core中怎么使用HTTP标头传播问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”在ASP.
2023-06-30

Asp.net中的DataBinder.Eval怎么使用

在ASP.NET中,DataBinder.Eval方法用于从绑定的数据源中检索属性的值。它通常与数据绑定控件一起使用,如GridView,Repeater,DataList等。下面是DataBinder.Eval方法的基本语法:<%#
Asp.net中的DataBinder.Eval怎么使用
2024-03-02

ASP.NET WebForm中怎么使用Ajax

这篇文章主要讲解了“ASP.NET WebForm中怎么使用Ajax”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET WebForm中怎么使用Ajax”吧!对于asp.net W
2023-06-17

ASP.NET中ImageButton控件怎么使用

在ASP.NET中,可以使用ImageButton控件来添加一个带有图像的按钮。1. 首先,在ASP.NET的Web表单中添加一个ImageButton控件。可以使用以下代码:```html```2. 设置ImageButton的属性。可以
2023-08-11

ASP.NET中LinkButton控件怎么使用

在ASP.NET中,可以使用LinkButton控件来创建一个链接按钮。LinkButton控件可以像超链接一样在网页中显示,并且可以触发服务器端的事件。使用LinkButton控件的步骤如下:1. 在ASP.NET页面的HTML代码中,使
2023-08-11

ASP.NET中Button控件怎么使用

在ASP.NET中,可以使用Button控件来创建一个按钮。以下是Button控件的使用步骤:1. 打开ASP.NET页面或用户控件的源代码文件。2. 在页面的HTML标记段落中添加以下代码来创建一个Button控件:```html```在
2023-08-11

ASP.NET中Razor语法怎么使用

Razor语法是一种在ASP.NET中用于创建动态网页的模板引擎。它允许开发人员将C#或VB.NET代码与HTML标记混合在一起,以便更轻松地生成动态内容。以下是一些常用的Razor语法示例:在HTML标记中嵌入C#代码:Welcome,
2023-10-23

ASP.NET中validationgroup属性怎么使用

在ASP.NET中,validationgroup属性用于指定一组相关的验证控件。它可以确保只有在相同的validationgroup属性值下的控件才会进行验证。要使用validationgroup属性,需要按照以下步骤进行操作:1. 在需
2023-09-21

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录