91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在ASP.NET中使用LazyCache

發布時間:2021-03-20 15:00:32 來源:億速云 閱讀:182 作者:Leah 欄目:開發技術

怎么在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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

枝江市| 甘谷县| 湘阴县| 田东县| 比如县| 枞阳县| 琼结县| 伊宁市| 锡林郭勒盟| 竹山县| 田东县| 平罗县| 彰化市| 开鲁县| 原平市| 鄂尔多斯市| 汕尾市| 湘乡市| 秭归县| 长汀县| 阿拉善右旗| 惠安县| 伊金霍洛旗| 胶州市| 涟水县| 塔城市| 泰和县| 高尔夫| 凯里市| 古田县| 蓝田县| 肥西县| 长宁县| 平谷区| 政和县| 泸定县| 昌吉市| 饶阳县| 邹平县| 濮阳县| 遂平县|