【问题标题】:StackExchange.Redis: How to configure Redis instanceStackExchange.Redis:如何配置 Redis 实例
【发布时间】:2020-12-16 03:31:34
【问题描述】:

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

【问题讨论】:

    标签: asp.net-core redis stackexchange.redis


    【解决方案1】:

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

    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's GetDatabase() 获取数据库 方法。关于redis选项的Instance属性,你在提供key时使用:

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

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

    【讨论】:

    • 能否详细说明我应该在哪里使用 RedisOptions 的“实例”属性?在您提供的代码中的 AddRedisQueue 中未使用此属性。 @Aspram
    • 我明白了,非常感谢。是否可以设置任何配置,这样我就不必每次都手动添加“实例名称”? @Aspram
    • 只要我知道你只有在使用 IDistributedCache 时才能拥有它。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2020-04-20
    • 2015-07-23
    相关资源
    最近更新 更多