首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用异步调用进行缓存

使用异步调用进行缓存
EN

Stack Overflow用户
提问于 2012-08-31 19:37:02
回答 2查看 245关注 0票数 0

你能帮帮我吗?我开发了基于web的系统,向服务器发送异步请求。服务器从数据库中获取大数据并缓存它。这需要大约5秒。Next call Server在缓存中搜索,因此需要大约0.05秒。对于第一次,5秒是可以的,但如果我在一次发送超过5个异步请求,每个线程创建缓存,所以它需要第一次超过20秒。我该如何改进这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-31 19:43:37

我以前遇到过这种情况,解决方案是将所有请求编组到某种类型的队列中,或者在数据库/缓存中设置忙标志,以便后续请求知道正在处理此问题。

所以第一个请求标记为忙并执行请求。下面的请求看到它是忙的,并将等待,直到标志不再标记为忙。然后,这些请求应该能够拉取缓存的副本。

票数 0
EN

Stack Overflow用户

发布于 2012-08-31 19:47:22

有趣的场景。但是,您还没有指定如何缓存信息以及代码如何运行。如果您正在使用ASP.Net缓存(和WCF / Web service),我不认为它支持像这样的更复杂的场景。如果你需要一些解决办法的想法(正如我所说的,只是想法,我以前没有尝试过),你可以尝试缓存一个状态为"NotCached“、"Caching”和"Cached“的标志。只需注意,如果两个请求完全同时完成,您可能会遇到并发问题。如果没有缓存,则启动该进程并将标志设置为"Caching“。在缓存时,您可以决定如何处理其他即将到来的请求。使用线程睡眠(我不推荐)或转到数据库,但不再缓存。当第一个请求完成缓存时,将标志设置为Cached并完成作业。如果您正在使用其他技术,则可以对请求进行排队,同时只缓存一个请求。如果您提供更多细节,它将有助于分析您的场景。

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

https://stackoverflow.com/questions/12214554

复制
相关文章

相似问题

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