【问题标题】:Does Redis Cache in .NET Core 3 requires the usage of the Stack Exchange package?.NET Core 3 中的 Redis 缓存是否需要使用 Stack Exchange 包?
【发布时间】:2020-04-05 02:40:19
【问题描述】:

在 .NET Core 2.2 中,在我的 Startup.cs 中,我有以下内容:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedRedisCache(...);             
}

但现在,在 .NET Core 3.0 中,找不到 AddDistributedRedisCache 方法。在 docs 中,“适用于”部分显示仅支持 .NET Core 2.2

在 Microsoft 的 this tutorial 之后,他们在示例中使用 services.AddStackExchangeRedisCache。这是否意味着我需要为 Redis 安装 Stack Exchange NuGet 包?为什么原生的微软 Redis 客户端解决方案被下架了?

【问题讨论】:

    标签: c# .net .net-core redis .net-core-3.0


    【解决方案1】:

    在他们的 git 存储库中进行了一些挖掘,但它已被删除。在当前存储库https://github.com/aspnet/Extensions 中并未发生删除,但在现在已归档的先前存储库https://github.com/aspnet/Caching 中发生了删除。

    您可以在此线程中看到原始包的一些问题:https://github.com/aspnet/Caching/issues/410#issuecomment-418912525

    删除发生在这里:https://github.com/aspnet/Caching/issues/423

    我查看了从 2.1 -> 2.2 和 2.2 -> 3.0 开始的 aspnet 重大更改列表,但没有列出任何内容。我将在文档上创建一个问题以查看它。

    在这一点上,我相信答案是使用 StackExchange 版本。无论如何,它显然比旧软件包有一些重大改进。

    更新:支持的最新包将是Microsoft.Extensions.Caching.StackExchangeRedis,只需使用此包最适合 .NET Core 3.0 及更高版本。

    类似的东西

    services.AddStackExchangeRedisCache(action =>
                    {
                        action.InstanceName = "WhatYouWantToNameIt";
                        action.Configuration = "127.0.0.1:6379";
                    });
    

    文档是here

    【讨论】:

    • 跟进:显然是在这里宣布的:github.com/aspnet/Announcements/issues/322
    • 提供的链接不是文档,只是一个微软存根页面。参考最后一个链接
    • 这里有一些更新的文档here。他们试图将您推送到 Azure Cache for Redis,但他们链接到关于在本地执行此操作的 github 评论。
    【解决方案2】:

    要使用AddDistributedRedisCache,您需要从nuget 安装Microsoft.Extensions.Caching.Redis。另一方面,如果您仔细检查您发布的文档,AdddistributedRedisCache 使用RedisCacheOptionsConfigurationOptions propertyStackExchange.Redis.ConfigurationOptions

    【讨论】:

    • 感谢您提供帮助,但这个答案暗示了我发布的完全相同的链接。此 NuGet 包是为 .NET Core 2.2 开发的。我想知道是否有适用于 .NET Core 3.0 的 Microsoft 包,或者我是否必须使用第三方库(Stack Exchange)。
    • @cash 包是 .Net Standard 2.0,关于这些链接,我想指出的是,即使您使用 AddDistributedRedisCache,您仍然会依赖 StackExchange.Redis。跨度>
    • @LeisenChang 问题是,如上面的链接中所述,Mirosoft.Extensions.Caching.Redis 中使用的 StackExchange.Redis 包更老,并且有一个错误意味着它可以饿死线程池.这是真的。
    • @hrillo666,根据github.com/dotnet/extensions/blob/master/src/Caching/… 的最新源代码,该扩展不依赖于特定版本的 StackExchange.Redis 库。此外,该扩展还为 netstandard2.0 编译,这有助于在 .Net 3.1 中引用它。
    猜你喜欢
    • 2017-01-02
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2015-05-11
    • 2017-06-12
    • 2023-01-25
    • 2020-07-03
    • 2017-03-15
    相关资源
    最近更新 更多