2012-01-03 78 views
1

我一直在阅读,很多人使用Redis或其他键值存储/ NoSQL解决方案作为其网站的分布式缓存。缓存大量数据

也许我没有完全理解,但看起来这仅适用于共享数据的解决方案。例如,如果我有一个网站需要用户登录,并且他们生成的查询返回的数据仅针对那些无法为所有用户缓存的用户(在我的案例中为银行/资产信息),但此类型的解决方案不起作用。

不幸的是,该数据库是在我们所有应用程序共享,当它陷入了下来,该网站被越陷越深为好。由于每个用户都有千兆字节的信息,因此我显然无法缓存所有这些信息,并且每个网页都会查询完全不同的信息。

是否有一些缓存策略可用于此类场景?

回答

1

像速度的分布式缓存不需要它存储的数据被限制为“共享”数据。但是您必须从数据库读取数据并将其存储在缓存中,这需要时间。

几个备选方案:

  • 分区数据,所以它在几个DB服务器摊开
  • 添加尽可能多的RAM,你可以给每个数据库服务器,允许SQL服务器缓存什么可以

有到分区主题的许多变化....

是Web应用程序的负载平衡? Web层也有缓存选项 - ASP.NET对象缓存是一个很好的开始。

0

您的Web客户端可能会多次请求相同的数据(对于给定的用户)。所以缓存可以在这种情况下带来好处。

但你去实现一个巨大的缓存解决方案之前,你真的需要看是特别慢或者执行一个巨大的次数的查询,看看是否可以以任何方式对其进行优化。

然后看看升级你的数据库机器。

0

我读过一篇关于MySpace在性能问题上有很大增长的不错文章。

您可以在文章here。从文章

一个报价脱颖而出:

添加缓存服务器是“这是我们应该从一开始就做 ,但我们成长太快,没有时间 坐下来做“,Benedetto补充道:

如果问题出在您的数据库服务器上,请考虑分区数据并利用数据库场来分散负载。也想想SSD的!他们可以真正加快您的数据库访问代码。

0

根据您的数据是如何动态的,你可以考虑使用Fragment Caching。这将缓存页面的HTML而不是数据,所以如果数据量禁止缓存,那么这可能适用于你