7
这个想法是使用较少的连接和更好的性能。 连接是否在任何时候到期?正确的方式使用StackExchange.Redis
而另一个问题,_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;
}
每次需要调用其中一个方法时,是否通过使用静态IDatabase对象与调用GetDatabase来影响性能? – Aaron 2017-08-18 19:37:02
@Aaron for db 0-15并且没有异步状态,在最近的版本中:根本没有。 (注意:'.GetDatabase()'是没有异步状态的db 0,所以:没有开销)。对于旧版本,大于15的dbs或者async-state:minimal - 分配一个对象 – 2017-08-18 21:22:24