sur*_*ret 8 c# stackexchange.redis .net-5
所以根据 StackExchange.Redis 文档,我要重新使用IConnectionMultiplexer。
services.AddSingleton<IConnectionMultiplexer>(
ConnectionMultiplexer
.Connect($"{configsOptions.RedisUrl},password={secretsOptions.RedisPassword}"));
Run Code Online (Sandbox Code Playgroud)
但后来我发现在我的 redis 服务方法中,我必须注入 IConnectionMultiplexer 然后连接到数据库,如下所示:
public Task GetSomethingFromRedis(string key)
{
IDatabase db = connectionMultiplexer.GetDatabase();
string value = db.StringGet(key);
}
Run Code Online (Sandbox Code Playgroud)
不用connectionMultiplexer.GetDatabase()每次都调用,我可以像这样注入对象的单例吗?IDatabase或者这真的是一个坏主意吗?
services.AddSingleton<IDatabase>(cfg =>
{
var redisConnection =
ConnectionMultiplexer
.Connect($"{configsOptions.RedisUrl},password={secretsOptions.RedisPassword}");
return redisConnection.GetDatabase();
});
Run Code Online (Sandbox Code Playgroud)
我最终做了这个
services.AddScoped<IDatabase>(cfg =>
{
IConnectionMultiplexer multiplexer = ConnectionMultiplexer.Connect($"{configsOptions.RedisUrl},password={secretsOptions.RedisPassword}");
return multiplexer.GetDatabase();
});
Run Code Online (Sandbox Code Playgroud)
然后为我服务:
private readonly IDatabase cache;
public RedisService(IDatabase cache)
{
this.cache = cache;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6370 次 |
| 最近记录: |