StackExchange.Redis: 如何配置Redis实例

StackExchange.Redis: How to configure Redis instance

我有一个 Redis 实例,我希望 StackExchange.Redis 连接到该特定实例,但我找不到任何配置来设置 InstanceName!

你可以有这样的扩展方法:

public static IServiceCollection AddRedisQueue(this IServiceCollection services, IConfiguration configuration)
    {
        var options = configuration.GetOptions<RedisOptions>(SectionName);
        var multiplexer = ConnectionMultiplexer.Connect(options.ConnectionString);
        services.AddSingleton<IConnectionMultiplexer>(multiplexer);

        return services;
    }

其中 RedisOptions 是这样的 class,部分名称是设置文件中的 redis 配置名称:

public class RedisOptions
{
    public string ConnectionString { get; set; }
    public string Instance { get; set; }
}

然后你可以在 Startup.cs ConfigureServices 方法中注入它,如下所示:

services.AddRedisQueue(Configuration);

稍后在代码中,您只需从要使用 redis 的 class 的构造函数中注入 IConnectionMultiplexer,然后通过调用 获取数据库IConnectionMultiplexer 的 GetDatabase() 方法。关于redis选项的Instance 属性,你在提供key的时候使用:

var key = $"{redisOptions.Value.Instance}some_key";

然后在处理堆栈交换的IDatabase实例时使用这个键。