这个想法是使用更少的连接和更好的性能。 连接是否随时到期?
另一个问题是,_redis.GetDatabase()
是否打开了新连接?
private static ConnectionMultiplexer _redis;
private static IDatabase _db;
public RedisCacheProvider(string configuration)
{
if (_redis == null)
lock (myLock)
if (_redis == null)
{
_redis = ConnectionMultiplexer.Connect(configuration);
_db = _redis.GetDatabase();
}
}
public async Task<string> GetString(string key)
{
string result = null;
RedisValue val = await _db.StringGetAsync(key);
if (val.HasValue)
result = val;
return result;
}
答案 0 :(得分:12)
不,多路复用器不会过期。 No GetDatabase不会打开新连接。 basics.md涵盖了这一点 - 特别是:
从GetDatabase返回的对象是一个廉价的pass-thru对象,不需要存储。