7
L'idea è di utilizzare meno connessioni e prestazioni migliori. La connessione scade in qualsiasi momento?Il modo corretto di utilizzare StackExchange.Redis
E per un'altra domanda, _redis.GetDatabase()
apre una nuova connessione?
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;
}
C'è un impatto sulle prestazioni utilizzando un oggetto IDatabase statico o chiamando GetDatabase ogni volta che è necessario chiamare uno dei suoi metodi? – Aaron
@Aaron per db 0-15 e senza stato asincrono, nelle build recenti: per niente. (nota: '.GetDatabase()' è db 0 senza uno stato asincrono, quindi: nessun overhead). Per versioni precedenti, dbs superiore a 15 o con stato asincrono: minimo: viene assegnato un singolo oggetto –