簡體   English   中英

當每秒有400-500個請求時,使用“ DatabaseAsync”通過c#進行Redis異步調用

[英]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可以,但是響應需要很多時間;

關於這個案例有什么想法嗎? 第二種方法有什么問題?

我認為有兩種方法可以提高負載下的掛鍾時間速度。

  1. 有2個await ,這是因為您已經對結果進行了兩次包裝,所以現在是Task<Task<T>> 將您的通話更改為:

     call2(client => redisInstance.SetMembersAsync(setName)) 
  2. 您可以通過使用.ConfigureAwait(false)來刪除等待后的隱式同步,以進行優化,因此將await更改為:

     return await task.ConfigureAwait(false); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM