.NET Core針對緩存提供了很好的支持 ,我們不僅可以選擇將數(shù)據(jù)緩存在應(yīng)用進(jìn)程自身的內(nèi)存中,還可以采用分布式的形式將緩存數(shù)據(jù)存儲在一個“中心數(shù)據(jù)庫”中。對于分布式緩存,.NET Core提供了針對Redis和SQL Server的原生支持。除了這個獨(dú)立的緩存系統(tǒng)之外,ASP.NET Core還借助一個中間件實(shí)現(xiàn)了“響應(yīng)緩存”,它會按照HTTP緩存規(guī)范對整個響應(yīng)實(shí)施緩存。不過按照慣例,在對緩存進(jìn)行系統(tǒng)介紹之前,我們還是先通過一些簡單的實(shí)例演示感知一下如果在一個ASP.NET Core應(yīng)用中如何使用緩存。
目錄
一、將數(shù)據(jù)緩存在內(nèi)存中
二、基于Redis的分布式緩存
三、基于SQL Server的分布式緩存
四、緩存整個HTTP響應(yīng)
一、將數(shù)據(jù)緩存在內(nèi)存中
與針對數(shù)據(jù)庫和遠(yuǎn)程服務(wù)調(diào)用這種IO操作來說,應(yīng)用針對內(nèi)存的訪問性能將提供不止一個數(shù)量級的提升,所以將數(shù)據(jù)直接緩存在應(yīng)用進(jìn)程的內(nèi)容中自然具有最佳的性能優(yōu)勢。與基于內(nèi)存的緩存相關(guān)的應(yīng)用編程接口定義在NuGet包“Microsoft.Extensions.Caching.Memory”中,具體的緩存實(shí)現(xiàn)在一個名為MemoryCache的服務(wù)對象中,后者是我們對所有實(shí)現(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()
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26