.NET 9中新快取HybridCache

banq發表於2024-06-30

是 .NET 9 中的一個全新快取 API,為 ASP.NET Core 應用程式提供了一種新的改進的快取解決方案。此新功能旨在簡化快取實現並提高效能。

HybridCache 的目標是解決 IMemoryCache 和 IDistributedCache 的缺點。

HybridCache 提供的一些功能:

  • - 程序內和程序外快取的統一 API
  • - 可配置的序列化
  • - Stampede 保護

預設的入口點是GetOrCreateAsync方法,它實現了快取旁模式。

  • HybridCache 會嘗試檢索指定鍵的物件。
  • 它會首先檢查一級和二級快取(如果配置了)。
  • 如果未找到物件,它會呼叫工廠方法,並在返回之前將其儲存起來。

HybridCache 還具有踩踏保護功能,確保只有一個針對給定鍵的併發請求可以執行工廠方法。

public class SomeService
{
    private readonly HybridCache _cache;

    public SomeService(HybridCache cache)
    {
        _cache = cache;
    }

    public async Task<string> GetSomeInfoAsync(string name, int id, CancellationToken token = default)
    {
        return await _cache.GetOrCreateAsync(
            $<font>"{name}-{id}", // 快取條目的唯一key<i>
            async cancel => await GetDataFromTheSourceAsync(name, id, cancel),
            token: token
        );
    }

    private async Task<string> GetDataFromTheSourceAsync(string name, int id, CancellationToken token)
    {
        string someInfo = $
"someinfo-{name}-{id}";
        return someInfo;
    }
}

HybridCache 的主要功能包括

  • 簡化的應用程式介面:GetOrCreateAsync 方法允許開發人員指定快取鍵和工廠方法,以便在不存在快取值的情況下建立快取值。
  • 併發執行處理:HybridCache 可確保一個給定鍵只有一個併發呼叫者執行工廠方法,而其他呼叫者則等待結果。
  • 可配置選項:開發人員可以使用 AddHybridCache 方法配置全域性預設值,包括最大有效載荷大小、鍵長度和預設入口選項。
  • 靈活的快取入口選項:HybridCacheEntryOptions 物件允許覆蓋特定快取項的全域性預設值,如過期時間。
  • 效能改進:與傳統的分散式快取相比,HybridCache 具有顯著的效能優勢。在基準測試中,訪問 HybridCache 的速度比訪問單獨的分散式快取快約 1000 倍。

.NET 9 中引入的 HybridCache 標誌著 ASP.NET Core 應用程式快取功能的重大改進,為開發人員提供了更高效、更易用的快取解決方案。

相關文章