首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c#异步调用DatabaseAsync,当每秒有400-500个请求时,使用“Redis”会使响应变慢

c#异步调用DatabaseAsync,当每秒有400-500个请求时,使用“Redis”会使响应变慢
EN

Stack Overflow用户
提问于 2017-02-23 21:43:01
回答 1查看 341关注 0票数 0

当我使用:

代码语言:javascript
复制
`public call(Func<IDatabase, Task<T>> func){
  var task=func(redisInstance); 
  task.wait();
  return task.Result;
}`

联系方式:call(client => redisInstance.SetMembersAsync(setName))

它工作得很好,但是当有很多请求时,'CPU‘的使用率就会增加;

但在第二种情况下:

代码语言:javascript
复制
`public async call2(Func<IDatabase, Task<T>> func){
   var task=func(redisInstance); 
   return await task.Result;
}`

联系方式:call2(async client => await redisInstance.SetMembersAsync(setName))

CPU正常,但响应时间较长;

对这个案子有什么想法吗?第二种方法有什么问题?

EN

回答 1

Stack Overflow用户

发布于 2017-04-16 07:22:12

我认为你可以做两件事来提高负载下的挂钟时间速度。

  1. 有2个awaits,这是因为你对结果进行了双重包装,所以它现在是Task<Task<T>>。将您的呼叫更改为:

等待(client redisInstance.SetMembersAsync(setName))

  • You call2可以通过使用.ConfigureAwait(false)删除等待后继续的隐式同步来进行优化,因此请将等待更改为:

返回等待task.ConfigureAwait(false);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42417474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档