C# 如何为Microsoft DistributedRedisCache使用单例DI?

C# 如何为Microsoft DistributedRedisCache使用单例DI?,c#,.net,azure,asp.net-core,redis,C#,.net,Azure,Asp.net Core,Redis,我的问题很简单,但我想知道如何将Singelton DI用于Microsoft分布式Redis缓存?当我检查startup.cs时。我意识到有些不对劲。你觉得怎么样 services.AddSingleton(ConnectionMultiplexer.Connect(Configuration.GetConnectionString(ProjectConst.Config.AzureRedisCacheConnection)); var redisConnString=Configuratio

我的问题很简单,但我想知道如何将Singelton DI用于Microsoft分布式Redis缓存?当我检查startup.cs时。我意识到有些不对劲。你觉得怎么样

services.AddSingleton(ConnectionMultiplexer.Connect(Configuration.GetConnectionString(ProjectConst.Config.AzureRedisCacheConnection));
var redisConnString=Configuration.GetConnectionString(ProjectConst.Config.AzureRedisCacheConnection);
services.AddDistributedRedisCache(选项=>
{
options.Configuration=redisConnString;
options.InstanceName=“测试”;
});
我认为下面的代码对于分布式cach来说已经足够了。我猜“AddDistributedRedisCache”对缓存没有用处,但不是必需的

 services.AddSingleton<IConnectionMultiplexer>(ConnectionMultiplexer.Connect(Configuration.GetConnectionString(ProjectConst.Config.AzureRedisCacheConnection)));

services.AddSingleton(ConnectionMultiplexer.Connect(Configuration.GetConnectionString(ProjectConst.Config.AzureRedisCacheConnection));

这个足够分发吗?谢谢你的回答。

这个问题不是很清楚
AddSingleton
与缓存无关,
IConnectionMultiplexer
不是ASP.NET核心的一部分。如果没有
AddDistributedRedisCache
您就根本没有缓存,更不用说分布式缓存,或者使用Redis了。
IConnectionMultiplexer
从何而来?谷歌搜索的第一个结果是StackExchange.Redis repo。真正的问题是如何使用Redis客户端而不是向ASP.NET Core添加缓存?services.AddSingleton(ConnectionMultiplexer.Connect(Configuration.GetConnectionString(ProjectConst.Config.AzureRedisCacheConnection));足够缓存吗?不,它与缓存无关。不要大喊大叫。如果使用StackExchange.Redis,该行将创建一个单例Redis连接。它不会向应用程序添加缓存。您将无法在代码中使用。您必须在控制器中硬编码Redis调用、超时检查等,或者构建自己的抽象,模仿缓存接口。SP.NET Core caching可以将其数据存储在任意数量的提供程序中—文件、关系数据库、密钥/值存储、分布式内存缓存(如memcached)或系统(如Redis)
AddDistributedMemoryCache
使用简化的分布式内存缓存启用缓存
AddDistributedRedisCache
使用Redis作为存储进行同样的操作
AddDistributedSqlServerCache
使用数据库(可能是内存中的表)执行相同的操作。其他人已经创建了其他实现,例如NCache。它们都支持相同的缓存中间件、API和行为