首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET InProc缓存与分布式缓存

ASP.NET InProc缓存与分布式缓存
EN

Stack Overflow用户
提问于 2014-09-02 18:24:59
回答 2查看 3.2K关注 0票数 2

我正在研究Redis和其他选择,因为我们将切换到编写分布式应用程序。我的想法是,我们需要像Redis这样的分布式缓存,以确保我们在任何地方都有一致的缓存。我的资深同事不同意我的观点,他说我们应该只使用选择性的InProc缓存,当一些数据被请求时,它会被缓存在机器的内存中。他还表示,Redis将比缓存数据InProc慢得多。他同意我们应该将会话状态存储在分布式缓存中,因为这需要保持一致。

保存缓存的最佳位置是什么?InProc还是分布式?

EN

回答 2

Stack Overflow用户

发布于 2014-09-25 03:14:12

进程内缓存或进程外缓存的使用完全依赖于应用程序。

Inproc缓存将数据存储在当前应用程序的进程内存中,这使得缓存数据的访问速度非常快,但是缓存数据只能由本地应用程序访问。如果您只有一个应用程序服务器,或者如果每个应用程序服务器都使用不同的数据集,则可以很好地执行此操作。即使如此,如果应用程序服务器宕机,缓存的数据也会丢失。

但是,如果您的多个应用程序服务器使用相同的数据集,则Inproc缓存不是最佳解决方案。因为在这种情况下,每个应用程序都将加载相同的数据集,从而限制了使用缓存的有用性。此外,对于会话状态缓存,它将留给您使用粘性会话的唯一选择,这反过来会限制负载平衡。

另一方面,分布式缓存将增加从另一台服务器获取数据的额外网络开销,但它将为您提供与所有其他应用程序共享相同数据集的优势。不仅如此,即使应用程序服务器宕机,数据也将保持缓存状态。

您还可以使用Inproc和OutProc缓存的混合解决方案,比如NCache提供的解决方案,您可以使用分布式集群缓存(包含所有缓存的数据)和本地inproc缓存(包含应用程序服务器经常使用的数据子集)。这将为您提供这两种缓存技术的优势。

由于您正在重写应用程序,因此我建议您尝试使用NCache。它提供in-proc和out-proc解决方案。您可以只编写一次应用程序,使用两种解决方案对其进行测试,并使用最适合您的解决方案。

票数 4
EN

Stack Overflow用户

发布于 2014-11-15 06:07:31

InProc和分布式缓存并不是相互排斥的,或者说你唯一的选择。您也可以使用distributed invalidation solutions

你确定你真的想要/需要会话状态吗?

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

https://stackoverflow.com/questions/25621150

复制
相关文章

相似问题

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