.NET 9 中的 多級(jí)緩存 HybridCache示例詳解
HybridCache是什么
在 .NET 9 中,Microsoft 將 HybridCache 帶入了框架體系。
HybridCache 是一種新的緩存模型,設(shè)計(jì)用于封裝本地緩存和分布式緩存,使用者無(wú)需擔(dān)心選擇緩存類(lèi)型,從而優(yōu)化性能和維護(hù)效率。
實(shí)際上,HybridCache 基于 IDistributedCache 提供的接口和操作,但增加了一些其他的特性,如封裝兩類(lèi)不同緩存庫(kù)(本地和分布),支持標(biāo)簽刪除(Tag-based Cache Eviction)和約束選項(xiàng)。
需要注意的是,HybridCache仍處于preview階段。
HybridCache 與 IDistributedCache 的區(qū)別
IDistributedCache:
- 僅支持分布式緩存,如 Redis、SQL Server、MemoryCache。
- 選擇依賴(lài)于目標(biāo)緩存和管理設(shè)備。
- 不支持標(biāo)簽刪除,只能基于鍵值操作。
HybridCache:
- 支持封裝本地和分布式緩存,在讀取時(shí)優(yōu)先讀取本地緩存,如本地不存在,再讀取分布式。
- 支持標(biāo)簽刪除,通過(guò)指定標(biāo)簽管理緩存內(nèi)容。
- 選項(xiàng)更加精簡(jiǎn),支持自動(dòng)化操作和選項(xiàng)約束。
HybridCache 的好處
- 性能優(yōu)化: 本地緩存速度超過(guò)分布式,使用 HybridCache 可以減少讀取分布緩存庫(kù)時(shí)的延遲。
- 精簡(jiǎn)化工程: 使用者不需再自行核實(shí)選擇哪個(gè)緩存,增加了工程效率。
- 標(biāo)簽管理: 緩存標(biāo)簽記錄不同類(lèi)型數(shù)據(jù),便于分類(lèi)管理和刪除緩存。
- 安全性: 支持選項(xiàng)約束,使緩存操作更嚴(yán)格,防止錯(cuò)誤使用和內(nèi)容虧失。
代碼示例
以下代碼展示如何使用 HybridCache:
1. 添加緩存服務(wù)
var builder = WebApplication.CreateBuilder(args); // 注冊(cè) HybridCache 服務(wù) builder.Services.AddHybridCache(); // 注冊(cè) Redis 緩存服務(wù),為 HybridCache 提供分布式緩存 builder.Services.AddStackExchangeRedisCache(options => { options.Configuration = builder.Configuration.GetConnectionString("RedisConnectionString"); }); builder.Services.AddControllers();
2. 實(shí)現(xiàn)接口操作
讀取緩存
[HttpGet("GetCache")] public async Task<string[]> Get() { return await _cache.GetOrCreateAsync( "a-1", async cancel => await Task.FromResult(Summaries) ); }
刪除緩存
[HttpGet("DeleteCache")] public async Task<bool> Delete() { await _cache.RemoveAsync("a-1"); return true; }
通過(guò)標(biāo)簽讀取緩存
[HttpGet("GetCacheByTag")] public async Task<string[]> GetCacheByTag() { var tags = new List<string> { "tag1", "tag2", "tag3" }; var entryOptions = new HybridCacheEntryOptions { Expiration = TimeSpan.FromMinutes(1), LocalCacheExpiration = TimeSpan.FromMinutes(1) }; return await _cache.GetOrCreateAsync( "a-1", async cancel => await Task.FromResult(Summaries), entryOptions, tags ); }
通過(guò)標(biāo)簽刪除緩存
[HttpGet("DeleteCacheByTag")] public async Task<bool> DeleteCacheByTag() { var tags = new List<string> { "tag1" }; await _cache.RemoveByTagAsync(tags); return true; }
小結(jié)
.NET 9 的 HybridCache 提供了一種便捷且高效的緩存解決方案,將本地緩存和分布式緩存無(wú)縫結(jié)合,為開(kāi)發(fā)者簡(jiǎn)化了緩存邏輯,同時(shí)提供了更多高級(jí)功能,如標(biāo)簽管理和選項(xiàng)約束。通過(guò)代碼示例可以看出,HybridCache 的操作直觀且易于實(shí)現(xiàn),非常適合現(xiàn)代應(yīng)用場(chǎng)景。
如果你正在使用 .NET 9,嘗試將 HybridCache 應(yīng)用于你的項(xiàng)目中,體驗(yàn)其高效與簡(jiǎn)潔!
文章轉(zhuǎn)載自:chester·chen
原文鏈接:https://www.cnblogs.com/chenyishi/p/18626831
體驗(yàn)地址:引邁 - JNPF快速開(kāi)發(fā)平臺(tái)_低代碼開(kāi)發(fā)平臺(tái)_零代碼開(kāi)發(fā)平臺(tái)_流程設(shè)計(jì)器_表單引擎_工作流引擎_軟件架構(gòu)
到此這篇關(guān)于.NET 9 中的 多級(jí)緩存 HybridCache的文章就介紹到這了,更多相關(guān).NET 多級(jí)緩存 HybridCache內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
.NET Core授權(quán)失敗自定義響應(yīng)信息的操作方法
這篇文章主要介紹了.NET Core授權(quán)失敗自定義響應(yīng)信息的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07Visual Studio 2017中找回消失的“在瀏覽器中查看”命令
這篇文章主要為大家詳細(xì)介紹了如何在Visual Studio 2017中找回消失的“在瀏覽器中查看”命令,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Entity?Framework管理一對(duì)一實(shí)體關(guān)系
本文詳細(xì)講解了Entity?Framework管理一對(duì)一實(shí)體關(guān)系的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03.net驗(yàn)證碼的刷新或局部刷新的方法實(shí)例
.net驗(yàn)證碼的刷新或局部刷新的方法實(shí)例,下面是實(shí)例,需要的朋友可以參考一下2013-03-03asp.net自定義控件回發(fā)數(shù)據(jù)實(shí)現(xiàn)方案與代碼
在實(shí)現(xiàn)asp.net的自定義控件中,若要實(shí)現(xiàn)數(shù)據(jù)的回發(fā)或者post數(shù)據(jù),那自義控件必須實(shí)現(xiàn)IPostBackDataHandler接口, 在該接口中有兩個(gè)方法一個(gè)是LoadPostData,另一個(gè)是RaisePostDataChangedEvent,需要的朋友可以了解下2012-12-12asp.net 臟字典過(guò)濾問(wèn)題 用正則表達(dá)式來(lái)過(guò)濾臟數(shù)據(jù)
asp.net 臟字典過(guò)濾問(wèn)題 用正則表達(dá)式來(lái)過(guò)濾臟數(shù)據(jù)2009-10-10.NetCore實(shí)現(xiàn)上傳多文件的示例詳解
本章和大家分享的是.NetCore的MVC框架上傳文件的示例,主要講的內(nèi)容有:form方式提交上傳,ajax上傳,ajax提交+上傳進(jìn)度效果,Task并行處理+ajax提交+上傳進(jìn)度,對(duì)大家非常有幫助,感興趣的朋友跟隨小編一起學(xué)習(xí)吧2017-04-04ASP.NET的適配器設(shè)計(jì)模式(Adapter)應(yīng)用詳解
有關(guān)設(shè)計(jì)模式的適配器模式(Adapter)確實(shí)不是很好理解理解,接下來(lái)將做一個(gè)簡(jiǎn)單的例子簡(jiǎn)要說(shuō)明下,感興趣的朋友可不要錯(cuò)過(guò)了哈,希望本文可以幫助到你更好的理解適配器設(shè)計(jì)模式2013-02-02.NET Core中使用Redis與Memcached的序列化問(wèn)題詳析
這篇文章主要介紹了.NET Core中使用Redis與Memcached的序列化問(wèn)題的相關(guān)內(nèi)容,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03