Azure Redis缓存与用于输出缓存的角色内缓存之间的性能差异

时间:2014-10-10 10:39:51

标签: caching azure redis azure-in-role-cache

我们正在将asp.net站点移动到Azure Web角色和Azure Sql数据库。该站点正在使用输出缓存和普通的Cache [xxx](即HttpRuntime.Cache)。现在,它们以经典的方式存储在Web角色实例内存中。

低悬的成果是首先开始使用分布式缓存进行输出缓存。我可以使用角色内缓存,无论是共存还是专用缓存角色,还是Redis缓存。两者都准备好了outputcache提供程序。

两者(具有共址/专用)缓存方法之间是否存在性能差异?

要考虑的一件事是,从每个服务器上的每个页面加载中获取Redis页面的速度要比每隔120秒从一个服务器编写一个页面更快或更慢,但只是从本地内存中获取它?

当我们想要在分布式缓存中开始缓存我们自己的数据(即pocos)而不是HttpRuntime.Cache时,哪个会扩展得更好?

-Mathias

1 个答案:

答案 0 :(得分:10)

单独回答您的每个问题:

  

两者之间是否有任何性能差异(thee with   共存/专用)缓存方法?

最终共存的缓存解决方案比专用缓存服务器更快,因为在共处一位/ inproc解决方案请求中将在本地处理,因为专用缓存解决方案将涉及通过网络获取数据。但是,由于数据将在缓存服务器上内存,因此获取仍然比从数据库获取更快。

  

要考虑的一件事是从Redis获取页面   每个服务器上的每个页面加载都比编写它更快或更慢   页面从头开始,每120秒一个服务器,但介于两者之间   从本地记忆中获取它?

这取决于页面上的对象数量,即从头开始撰写页面所花费的时间。虽然从缓存中获取将涉及网络旅行时间,但其大部分时间只有几分之一。

  

当我们想要开始缓存我们自己的数据时,哪个会更好地扩展   (即pocos)在分布式缓存中而不是HttpRuntime.Cache?

由于HttpRuntime.Cache是​​进程内缓存,因此它仅限于单个进程的内存,因此它不可伸缩。另一方面,分布式缓存是一种可扩展的解决方案,您可以随时添加更多服务器以增加缓存空间和吞吐量。此外,分布式缓存解决方案的out-proc性质使得可以访问由应用程序进程缓存的数据,以供任何其他进程使用。

您还可以将NCache for Azure视为分布式缓存解决方案。 NCache是一个原生的.Net分布式缓存解决方案。

以下Iqbal Khan撰写的博客文章将帮助您更好地了解ASP.Net应用程序的分布式缓存需求:

我希望这会有所帮助: - )

-Sameer