.NET Core針對緩存提供了很好的支持 ,我們不僅可以選擇將數(shù)據(jù)緩存在應(yīng)用進程自身的內(nèi)存中,還可以采用分布式的形式將緩存數(shù)據(jù)存儲在一個“中心數(shù)據(jù)庫”中。對于分布式緩存,.NET Core提供了針對Redis和SQL Server的原生支持。除了這個獨立的緩存系統(tǒng)之外,ASP.NET Core還借助一個中間件實現(xiàn)了“響應(yīng)緩存”,它會按照HTTP緩存規(guī)范對整個響應(yīng)實施緩存。不過按照慣例,在對緩存進行系統(tǒng)介紹之前,我們還是先通過一些簡單的實例演示感知一下如果在一個ASP.NET Core應(yīng)用中如何使用緩存。
目錄
一、將數(shù)據(jù)緩存在內(nèi)存中
二、基于Redis的分布式緩存
三、基于SQL Server的分布式緩存
四、緩存整個HTTP響應(yīng)
一、將數(shù)據(jù)緩存在內(nèi)存中
與針對數(shù)據(jù)庫和遠程服務(wù)調(diào)用這種IO操作來說,應(yīng)用針對內(nèi)存的訪問性能將提供不止一個數(shù)量級的提升,所以將數(shù)據(jù)直接緩存在應(yīng)用進程的內(nèi)容中自然具有最佳的性能優(yōu)勢。與基于內(nèi)存的緩存相關(guān)的應(yīng)用編程接口定義在NuGet包“Microsoft.Extensions.Caching.Memory”中,具體的緩存實現(xiàn)在一個名為MemoryCache的服務(wù)對象中,后者是我們對所有實現(xiàn)了IMemoryCache接口的所有類型以及對應(yīng)對象的統(tǒng)稱。由于是將緩存對象直接置于內(nèi)存之中,中間并不涉及持久化存儲的問題,自然也就無需考慮針對緩存對象的序列化問題,所以這種內(nèi)存模式支持任意類型的緩存對象。
針對緩存的操作不外乎對緩存數(shù)據(jù)的存與取,這兩個基本的操作都由上面介紹的這個MemoryCache對象來完成。如果我們在一個ASP.NET Core應(yīng)用對MemoryCache服務(wù)在啟動時做了注冊,我們就可以在任何地方獲取該服務(wù)對象設(shè)置和獲取緩存數(shù)據(jù),所以針對緩存的編程是非常簡單的。
1: public class Program
2: {
3: public static void Main()
網(wǎng)友評論