2016-06-01 15 views
0

Putting erwarten für asynchrone Methodenaufruf ist obligatorisch in .net ?? Zum Beispiel: Ich habe einen Befehl zum Zurücksetzen, auf den ich nicht warten möchte.Wirkung von BookSleev.Redis asynchroner Satz ohne erwarten

.....statements.... 
await redis.Hashes.Set(db, mainKey, value); 
.....statements after set command...... 

Ich möchte nicht die Ausführung meiner Methode im Set-Befehl anhalten. Also habe ich 'abwarten' entfernt.

.....statements.... 
redis.Hashes.Set(db, mainKey, value); 
....statements after set command...... 

Ist das eine gute Praxis ??

Antwort

0

Sie können wählen, nicht auf eine Aufgabe warten, aber ich bin mir nicht sicher, es ist eine gute Übung. Wenn in der aufgerufenen Task Ausnahmen enthalten sind, wissen Sie nichts darüber.

Siehe https://msdn.microsoft.com/en-gb/library/hh965065.aspx

Auch hat Booksleeve für eine ganze Weile jetzt als veraltet und wird durch StackExchange.Redis ersetzt. Sie sollten wahrscheinlich versuchen, das stattdessen zu verwenden, wenn möglich.

StackExchange.Redis verfügt über einen CommandFlags.FireAndForget-Parameter, den Sie angeben können, der sofort den Standardwert zurückgibt und nicht darauf wartet, dass der Befehl abgeschlossen wird.

connection.GetDatabase().HashSet(key, field, value, flags: CommandFlags.FireAndForget) 

Documentation for FireAndForget

+0

Danke, was ist besser? Ich kann einen großen Unterschied in der Ausführungszeit zwischen ConnectionProvider.GetConnection () sehen; von Bookleev und connectionProvider.GetMultiplexer(). GetDatabase(); Stapelaustausch. Booksleeve ist weit besser in Verbindung Zeit - ich fühle mich so. korrigiere mich, wenn ich falsch liege –

+0

Ich würde definitiv StackExchange.Redis über Booksleeve empfehlen. Booksleeve wird nicht länger gepflegt, und SE.Redis hat bessere Unterstützung für moderne Redis-Funktionen, einschließlich Failover, Cluster usw. ... Hier ist der Blogeintrag von Mark Gravell, der erklärt, warum SE.Redis als Ersatz geschrieben wurde - http: //blog.marcgravell. com/2014/03/so-ich-ging-und-schrieb-ein anderer-redis-client.html – Sam

+0

In Bezug auf die Verbindungszeit, ich weiß nicht, was Booksleeve intern tut, aber SE.Redis unterhält und automatisch versucht, wieder zu verbinden konfigurierte Redis-Instanzen. Da Verbindungen dauerhaft sind, sollte die Verbindungszeit kein wesentlicher Faktor bei der Entscheidung sein, welche Bibliothek verwendet werden soll. – Sam