缓存大量数据

时间:2012-01-03 14:05:47

标签: asp.net caching redis

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

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

不幸的是,数据库在我们所有的应用程序中共享,当它陷入困境时,网站也陷入困境。由于每个用户都有千兆字节的信息,我显然无法缓存所有这些信息,每个网页都会查询完全不同的信息。

我是否可以采用一些缓存策略来应对这种情况?

4 个答案:

答案 0 :(得分:1)

像Velocity这样的分布式缓存并不要求它存储的数据仅限于“共享”#34;数据。但是你必须从数据库中读取数据并将其存储在缓存中,这需要时间。

一些替代方案:

  • 对数据进行分区,使其分布在多个数据库服务器中
  • 为每个数据库服务器添加尽可能多的RAM,以允许SQL Server缓存它可以
  • 的内容

分区主题有很多变化......

您的网络应用是否负载均衡? Web层也有缓存选项 - ASP.NET对象缓存是一个很好的起点。

答案 1 :(得分:0)

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

但是在实施一个巨大的缓存解决方案之前,你真的需要查看特别慢或执行了很多次的查询,看看你是否可以以任何方式优化它们。

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

答案 2 :(得分:0)

我读了一篇很好的文章,讲述了MySpace增长巨大时的性能问题。

您可以找到文章here

引用该文章的一句话引人注目:

  

添加缓存服务器是“我们应该做的事情   从一开始,但我们增长太快,没有时间   坐下来做,“Benedetto补充说。”

如果您的数据库服务器出现问题,请考虑对数据进行分区并利用数据库服务器场来分散负载。想想SSD吧!它们确实可以加速您的数据库访问代码。

答案 3 :(得分:0)

根据您的数据动态情况,您可以考虑使用Fragment Caching。这将缓存页面的HTML而不是数据,因此如果数据量禁止缓存,那么这可能对您有用