2016-06-01 3 views
0

. 비동기 메서드 호출을 기다리는 것은 .net에서 필수입니다 ?? 예 : 기다리고 싶지 않은 redis set 명령이 있습니다.BookSleev.Redis 비동기 집합의 영향 없음

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

set 명령에서 내 메소드의 실행을 일시 중지하고 싶지 않습니다. 그래서 나는 '기다림'을 제거했다.

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

이 방법이 좋은 방법입니까?

답변

0

작업을 기다리지 않도록 선택할 수는 있지만 좋은 습관은 아닌 것 같습니다. 호출 된 태스크에 예외가 발생하면 해당 태스크에 대해 알 수 없습니다.

또한, Booksleeve 지금은 꽤 오랫동안 사용되지 않습니다

https://msdn.microsoft.com/en-gb/library/hh965065.aspx를 참조하고, StackExchange.Redis로 대체됩니다. 가능하다면 아마도 대신 그걸 사용하려고해야합니다.

StackExchange.Redis에는 기본값을 즉시 반환하고 명령이 완료 될 때까지 기다리지 않도록 지정할 수있는 CommandFlags.FireAndForget 매개 변수가 있습니다. 더

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

Documentation for FireAndForget

+0

감사? 내가 ConnectionProvider.GetConnection () 사이의 실행 시간에 큰 차이를 볼 수 있습니다; Booksleev 및 connectionProvider.GetMultiplexer(). GetDatabase(); stackexchange의 Booksleeve는 연결 시간이 훨씬 길다. 나는 그렇게 느낀다. 내가 틀렸다면 나를 바로 잡으십시오. –

+0

나는 Stacklechange.Redis를 Booksleeve보다 확실히 추천합니다. Booksleeve는 더 이상 유지 관리되지 않으며 SE.Redis는 페일 오버, 클러스터 등을 포함한 현대적인 재발 기능을 더 잘 지원합니다. SE.Redis가 대체로 작성된 이유를 설명하는 Mark Gravell의 블로그 항목은 다음과 같습니다 - http : //blog.marcgravell. com/2014/03/so-i-went-and-wrote-another-redis-client.html – Sam

+0

연결 시간과 관련하여 Booksleeve가 내부적으로 어떤 일을하는지는 모르지만 SE.Redis는 유지 관리하고 자동으로 다시 연결을 시도합니다. 구성된 redis 인스턴스. 연결은 지속되므로 연결 시간은 사용할 라이브러리에 대한 결정에 중요한 요소가되어서는 안됩니다. – Sam