【发布时间】:2020-12-16 03:31:34
【问题描述】:
我有一个 Redis 实例,我希望 StackExchange.Redis 连接到该特定实例,但我找不到任何配置来设置 InstanceName!
【问题讨论】:
标签: asp.net-core redis stackexchange.redis
我有一个 Redis 实例,我希望 StackExchange.Redis 连接到该特定实例,但我找不到任何配置来设置 InstanceName!
【问题讨论】:
标签: asp.net-core redis stackexchange.redis
你可以有这样的扩展方法:
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 实例时使用此键。
【讨论】: