所以根据 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)