gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:03:37 26 4
gpt4 key购买 nike

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

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

最佳答案

使用进程内或进程外缓存完全取决于应用程序。

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

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

另一方面,分布式缓存会增加从另一台服务器获取数据的额外网络成本,但它会给您带来与所有其他应用程序共享相同数据集的优势。不仅如此,即使应用程序服务器出现故障,数据仍会保留在缓存中。

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

由于您正在重写您的应用程序,我建议您尝试 NCache .它提供进程内和进程外解决方案。您只需编写一次应用程序,使用两种解决方案对其进行测试,然后选择最适合您的那个。

关于ASP.NET InProc 缓存与分布式缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25621150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com