Search code examples
asp.net-coreredisazure-redis-cache

Differences between "Microsoft.Extensions.Caching.Redis" and "Microsoft.Extensions.Caching.StackExchangeRedis.Redis"?


I am a little bit lost. I am reading Microsoft documentation for ASP.NET Core caching using Redis. And the documentation suggests to use Microsoft.Extensions.Caching.StackExchangeRedis which is an open source third party library.

But I've seen some other tutorials are using Microsoft.Extensions.Caching.Redis, which is a more native asp.net core.

And at the end they both use the same interface IDistributedCache.

Why do I need Microsoft.Extensions.Caching.StackExchangeRedis?
What advantages it has over Microsoft.Extensions.Caching.Redis?


Solution

  • A look at the dependency graph for Microsoft.Extensions.Caching.Redis and Microsoft.Extensions.Caching.StackExchangeRedis reveals it.

    Microsoft.Extensions.Caching.Redis is based on StackExchange redis 1.x library, whereas Microsoft.Extensions.Caching.StackExchangeRedis is based on 2.x of the same library.

    Also Microsoft.Extensions.Caching.Redis doesn't seem to target the 3.1 extension libraries (Microsoft.Extensions.Options/Caching.Abstractions) where the other does.

    So for .NET Core 3.x and newer use Microsoft.Extensions.Caching.StackExchangeRedis as the previous one may not be maintained as long as the new one.