StackExchange.Redis:如何配置Redis实例

问题描述

我有一个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是这样的类,而部分名称是设置文件中的redis配置名称:

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

然后,您可以将其注入 Startup.cs ConfigureServices 方法,如下所示:

services.AddRedisQueue(Configuration);

稍后在代码中,您只需从要使用Redis的类的构造函数中注入 IConnectionMultiplexer ,然后通过调用 IConnectionMultiplexer的 GetDatabase()来获取数据库方法。关于redis选项的实例属性,可以在提供密钥时使用它:

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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...