Die Idee ist es, weniger Verbindung und bessere Leistung zu verwenden. Läuft die Verbindung zu irgendeinem Zeitpunkt ab?Die richtige Art der Verwendung von StackExchange.Redis
Und für eine andere Frage, öffnet _redis.GetDatabase()
neue Verbindung?
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;
}
Gibt es einen Leistungseinfluss durch die Verwendung eines statischen IDatabase-Objekts im Vergleich zum Aufrufen von GetDatabase jedes Mal, wenn Sie eine der Methoden aufrufen müssen? – Aaron
@Aaron für db 0-15 und ohne einen asynchronen Zustand, in den letzten Builds: überhaupt nicht. (Hinweis: '.GetDatabase()' ist db 0 ohne Async-Status, also: kein Overhead). Für ältere Builds, dbs über 15 oder mit einem async-state: minimal - ein einzelnes Objekt wird zugewiesen –