日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

如何在 ASP.Net Core 使用 分布式缓存

發(fā)布時間:2023/12/4 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 ASP.Net Core 使用 分布式缓存 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ASP.Net Core 提供了多種類型的緩存,除了內存緩存和響應緩存之外,還提供了對 分布式緩存 的支持。在之前的一篇文章中,我討論了 ASP.Net Core 的內存緩存。在本文中,我們將討論如何在 ASP.Net Core 中使用分布式緩存,本篇就拿 Redis 和 SQL Server 作為演示。

什么是分布式緩存

分布式緩存 可用于提高應用程序的性能和可伸縮性,通常 分布式緩存 被多個應用服務器共享,在分布式緩存中,緩存的數(shù)據(jù)不會落在某些個別的web服務器內存中,這些緩存數(shù)據(jù)采用集中化存儲,這樣多個應用服務器都可以直接使用,這樣做的好處在于,如果任何一個服務器宕機或者停止響應,其他的服務器仍然能夠檢索緩存的數(shù)據(jù)。分布式緩存的另一個優(yōu)點是,緩存的數(shù)據(jù)在服務器重啟后仍然存在,當你的應用集群擴展時,并不會對緩存服務器造成任何影響。

要想在 ASP.NET Core 中使用分布式緩存,需要用到 IDistributedCache 接口,在下一節(jié)中,我們將會一起討論 IDistributedCache 和 IMemoryCache 接口的區(qū)別。

IDistributedCache 接口

在.Net Core 中用于分布式緩存的 IDistributedCache 接口要比 單機版的 IMemoryCache 接口更復雜,先來看一下 IMemoryCache 接口定義。

public?interface?IMemoryCache?:?IDisposable {bool?TryGetValue(object?key,?out?object?value);ICacheEntry?CreateEntry(object?key);void?Remove(object?key); }

IDistributedCache 接口是為 web farm 場景設計的, 它包含了一組同步和異步方法,可用于對緩存的 Add,Remove,Retrieve 操作,下面是 IDistributedCache 接口的定義。

public?interface?IDistributedCache {byte[]?Get(string?key);Task<byte[]>?GetAsync(string?key);void?Set(string?key,?byte[]?value,?DistributedCacheEntryOptions?options);Task?SetAsync(string?key,?byte[]?value,?DistributedCacheEntryOptions?options);void?Refresh(string?key);Task?RefreshAsync(string?key);void?Remove(string?key);Task?RemoveAsync(string?key); }

有一點值得注意,上面的 Set 方法的 value 僅支持 byte[],有點坑哈,當然你要塞入 string 的話, 不用擔心,ASP.NET Core 也提供了擴展方法對其進行支持.

如何使用 Redis 作為緩存介質

可以通過 Nuget 來安裝如下擴展包,代碼如下:

Install-Package?Microsoft.Extensions.Caching.Redis

為了能夠把 Redis 作為應用底層緩存,需要使用 AddDistributedRedisCache() 擴展方法,下面的代碼展示了如何去配置:

public?void?ConfigureServices(IServiceCollection?services) {services.AddMvc();services.AddDistributedRedisCache(option?=>{option.Configuration?="localhost";option.InstanceName?="IDG";}); }

如何注入到 Controller

下面的代碼清單展示了如何將 IDistributedCache 注入到 Controller 中并實現(xiàn)從 Redis 中進行插入和讀取。

public?class?DefaultController?:?Controller {private?readonly?IDistributedCache?_distributedCache;public?HomeController(IDistributedCache?distributedCache){_distributedCache?=?distributedCache;}[HttpGet]public?async?Task<string>?Get(){var?cacheKey?="IDG";var?data?=?_distributedCache.GetString(cacheKey);if?(!string.IsNullOrEmpty(data)){return?data;?//returned?from?Cache}else{string?str?="Hello?World";_distributedCache.SetString(cacheKey,?str);return?str;}} }

如何使用 SqlServer 作為緩存介質

要想將 SqlServer 作為底層的緩存介質,需要通過 Nuget 安裝如下包:

Install-Package?Microsoft.Extensions.Caching.SqlServer Install-Package?Microsoft.Extensions.Caching.SqlConfig.Tools

如何在 Startup.ConfigureServices() 中做如下配置。

public?void?ConfigureServices(IServiceCollection?services){services.AddControllersWithViews();services.AddDistributedSqlServerCache(x?=>{x.ConnectionString?=?Configuration["ConnectionStrings:Default"];x.SchemaName?=?"dbo";x.TableName?=?"IDGCache";});}

接下來通過如下命令在 SqlServer 中生成 Table 來存放緩存數(shù)據(jù),代碼如下:

dotnet?sql-cache?create?<connection?string>?<schema>?<table>

ASP.Net Core 提供了分布式緩存的高層抽象。因此,無論底層緩存介質是 Redis 還是 SQL Server, IDistributedCache接口都提供了統(tǒng)一并且便捷的操控Cache的API,而且 IDistributedCache 注入到 Controller 中也是非常方便的。

譯文鏈接:https://www.infoworld.com/article/3262990/web-development/how-to-implement-a-distributed-cache-in-aspnet-core.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的如何在 ASP.Net Core 使用 分布式缓存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。