Microsoft.Extensions.Caching.Hybrid 9.0.0-preview.9.24507.7

Microsoft.Extensions.Caching.Hybrid

This package contains a concrete implementation of the HybridCache API, simplifying and enhancing cache usage that might previously have been built on top of IDistributedCache.

Key features:

  • built on top of IDistributedCache - all existing cache backends (Redis, SQL Server, CosmosDB, etc) should work immediately
  • simple API (all the cache, serialization, etc details from are encapsulated)
  • cache-stampede protection (combining of concurrent requests for the same data)
  • performance enhancements such as inbuilt support for the newer IBufferDistributedCache API
  • fully configurable serialization

Full HybridCache documentation is here.

Full documentation

See learn.microsoft.com for full discussion of HybridCache.

Install the package

From the command-line:

dotnet add package Microsoft.Extensions.Caching.Hybrid

Or directly in the C# project file:

<ItemGroup>
  <PackageReference Include="Microsoft.Extensions.Caching.Hybrid" Version="[CURRENTVERSION]" />
</ItemGroup>

Usage example

The HybridCache service can be registered and configured via IServiceCollection, for example:

builder.Services.AddHybridCache(/* optional configuration /*);

Note that in many cases you may also wish to register a distributed cache backend, as discussed here; for example a Redis instance:

builder.Services.AddStackExchangeRedisCache(options =>
{
    options.Configuration = builder.Configuration.GetConnectionString("MyRedisConStr");
});

Once registered, the HybridCache instance can be obtained via dependency-injection, allowing the GetOrCreateAsync API to be used to obtain data:

public class SomeService(HybridCache cache)
{
    private HybridCache _cache = cache;

    public async Task<SomeDataType> GetSomeInfoAsync(string name, int id, CancellationToken token = default)
    {
        return await _cache.GetOrCreateAsync(
            $"{name}-{id}", // Unique key to the cache entry
            async cancel => await GetDataFromTheSourceAsync(name, id, cancel),
            cancellationToken: token
        );
    }

    private async Task<SomeDataType> GetDataFromTheSourceAsync(string name, int id, CancellationToken token)
    {
        // talk to the underlying data store here - could be SQL, gRPC, HTTP, etc
    }
}

Additional usage guidance - including expiration, custom serialization support, and alternate usage to reduce delegate allocation - is available on learn.microsoft.com.

Showing the top 20 packages that depend on Microsoft.Extensions.Caching.Hybrid.

Packages Downloads
Microsoft.Extensions.Caching.SqlServer
Distributed cache implementation of Microsoft.Extensions.Caching.Distributed.IDistributedCache using Microsoft SQL Server. This package was built from the source code at https://github.com/dotnet/aspnetcore/tree/8af96e042134fb3b2f21df26dd0f32ea1c00dd37
27
Microsoft.Extensions.Caching.SqlServer
Distributed cache implementation of Microsoft.Extensions.Caching.Distributed.IDistributedCache using Microsoft SQL Server. This package was built from the source code at https://github.com/dotnet/aspnetcore/tree/ada5ad97d2114250a05550cb28cc18b9cf9f8993
18
Microsoft.Extensions.Caching.SqlServer
Distributed cache implementation of Microsoft.Extensions.Caching.Distributed.IDistributedCache using Microsoft SQL Server. This package was built from the source code at https://github.com/dotnet/aspnetcore/tree/f5084525411d53b81d9950b68616117750b674d4
21

.NET Framework 4.6.2

.NET Standard 2.1

.NET Standard 2.0

.NET 9.0

.NET 8.0

Version Downloads Last updated
9.0.0-preview.9.24507.7 2 10/23/2024
9.0.0-preview.7.24406.2 4 08/21/2024
9.0.0-preview.6.24328.4 29 07/20/2024
9.0.0-preview.5.24306.11 30 07/20/2024
9.0.0-preview.4.24267.6 22 07/20/2024