Exploring HybridCache in .Net 9: A Game-Changer for ASP.NET Core Applications

sharmila subbiah
C# Programming
Published in
3 min readJul 3, 2024

Introduction

As ASP.NET Core continues to evolve, the introduction of HybridCache in .NET 9 represents a significant advancement in caching strategies. This feature is designed to enhance the performance and reliability of web applications by combining the benefits of in-memory caching with out-of-process caching mechanisms such as Redis or SQL Server.

Understanding HybridCache

HybridCache aims to bridge the gap between the speed of in-memory caches and the persistence and scalability of external caches. By using a hybrid approach, it ensures that applications can benefit from the low latency of in-memory access while maintaining data consistency and availability through external caching solutions.

Key Features of HybridCache

  1. Unified API: HybridCache offers a unified API for both in-process and out-of-process caching. It acts as a drop-in replacement for IDistributedCache and IMemoryCache, simplifying the integration of new caching code. If an IDistributedCache implementation exists, HybridCache uses it for secondary caching, providing the speed of in-memory cache and the durability of a distributed cache.
  2. Stampede Protection: HybridCache mitigates cache stampedes by ensuring that only one caller executes the factory method for a given key, while others wait for the result. This prevents multiple requests from overloading the system when repopulating the cache.
  3. Configurable Serialization: Serialization is customizable during service registration, supporting type-specific and generalized serializers via WithSerializer and WithSerializerFactory methods. By default, it handles string and byte[] using System.Text.Json, but it can be configured for other serializers like protobuf or XML.

Implementing HybridCache

For this implementation, I have used an ASP.NET Core application with .NET 9 Preview 5.

Install the HybridCache Package:

dotnet add package Microsoft.Extensions.Caching.Hybrid --prerelease

Add the HybridCache service to the dependency injection (DI) container:

builder.Services.AddHybridCache();

Inject the HybridCache class into your services and use it to cache data.

 public class Hybrid
{
private readonly HybridCache hybridCache;


public async Task GetDataAsync(string key)
{
return await this.hybridCache.GetOrCreateAsync(key, async entry =>
{

});
}
}

In many scenarios, GetOrCreateAsync is the only API needed. But HybridCache, SetAsyncalso has to store an object in cache without trying to retrieve it first.

Benefits of HybridCache

  • Increased Reliability: The fallback to secondary cache ensures that data remains accessible even if the primary cache is unavailable.
  • Improved Performance: By leveraging the speed of in-memory caching, applications can handle high read loads efficiently.
  • Scalability: External caches like Redis provide the ability to scale horizontally, accommodating growing application demands.

Conclusion

The introduction of HybridCache in .NET 9 offers ASP.NET Core developers a robust caching solution that combines the best of both in-memory and out-of-process caching. This hybrid approach not only improves application performance but also enhances reliability and scalability. As you integrate HybridCache into your projects, you can look forward to more efficient and resilient web applications.

For more detailed information and advanced configuration options, refer to the official documentation.

--

--

sharmila subbiah
C# Programming

With over a decade of experience in the tech industry, I currently hold the position of Senior Software Engineer at Youlend.