Asp.net core 通过依赖项注入从asp.net内核中的Redis缓存获取所有密钥

Asp.net core 通过依赖项注入从asp.net内核中的Redis缓存获取所有密钥,asp.net-core,dependency-injection,redis,stackexchange.redis,Asp.net Core,Dependency Injection,Redis,Stackexchange.redis,我正在使用StackExchange.Redis进行缓存。我想使用依赖项注入从asp.NETCore中的Redis数据库获取所有密钥。这就是我使用以下代码的原因: public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IConnectionMultiplexer>(provider => ConnectionMultiplexer.Connect("

我正在使用StackExchange.Redis进行缓存。我想使用依赖项注入从asp.NETCore中的Redis数据库获取所有密钥。这就是我使用以下代码的原因:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IConnectionMultiplexer>(provider => ConnectionMultiplexer.Connect("localhost:6379"));
}
public void配置服务(IServiceCollection服务)
{
services.AddSingleton(provider=>ConnectionMultiplexer.Connect(“localhost:6379”);
}
以及:

公共类MyClass:IMyClass
{
专用IConnectionMultiplexer\u redis;
公共MyClass(IConnectionMultiplexer redis)
{
_redis=redis;
}
公共列表执行()
{
var list=_redis.**GetServer(“localhost”,6379)**.Keys(模式:“Something”).ToList();
}
}

我的问题是,我必须在我的类中使用“GetServer”方法并设置它的主机地址和端口号,而我在启动时设置了这些值。有解决此问题的方法吗?

您可以通过配置共享服务器信息,并在两个位置使用它,而不必关心其值。多路复用器可以涉及多个服务器,并且只能在特定服务器上获取所有密钥。因此,您需要在这两个位置指定服务器。实际上,您有一个api来获取所有端点,并对每个端点使用
GetServer
,在这种情况下,它也应该可以(因为看起来您只有一台服务器)。如果有多个服务器,您可能需要合并来自每个服务器的所有密钥以获得最终结果。
public class MyClass: IMyClass
{
    private IConnectionMultiplexer _redis;
    public MyClass(IConnectionMultiplexer redis)
    {
        _redis = redis;
    }
    public List<MyKeys> Execute()
    {
        var list = _redis.**GetServer("localhost", 6379)**.Keys(pattern: "Something").ToList();
    }
}