[英]Redis async call by c#, using “DatabaseAsync” makes response slower when there are 400-500 requests per second
當我使用時:
`public call(Func<IDatabase, Task<T>> func){
var task=func(redisInstance);
task.wait();
return task.Result;
}`
呼叫: call(client => redisInstance.SetMembersAsync(setName))
它工作正常,但是當有許多請求時,“ CPU”使用率增加;
但在第二種情況下:
`public async call2(Func<IDatabase, Task<T>> func){
var task=func(redisInstance);
return await task.Result;
}`
呼叫: call2(async client => await redisInstance.SetMembersAsync(setName))
CPU可以,但是響應需要很多時間;
關於這個案例有什么想法嗎? 第二種方法有什么問題?
我認為有兩種方法可以提高負載下的掛鍾時間速度。
有2個await
,這是因為您已經對結果進行了兩次包裝,所以現在是Task<Task<T>>
。 將您的通話更改為:
call2(client => redisInstance.SetMembersAsync(setName))
您可以通過使用.ConfigureAwait(false)
來刪除等待后的隱式同步,以進行優化,因此將await更改為:
return await task.ConfigureAwait(false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.