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