我一直在阅读很多人使用Redis或其他键值存储/ NoSQL解决方案作为其网站的分布式缓存。
也许我不完全理解,但似乎这样的解决方案仅适用于共享数据。例如,如果我的网站需要用户登录,并且他们生成的查询返回的数据仅针对所有用户无法缓存的用户(在我的情况下,银行/资产信息),此类型解决方案不起作用。
不幸的是,数据库在我们所有的应用程序中共享,当它陷入困境时,网站也陷入困境。由于每个用户都有千兆字节的信息,我显然无法缓存所有这些信息,每个网页都会查询完全不同的信息。
我是否可以采用一些缓存策略来应对这种情况?
答案 0 :(得分:1)
像Velocity这样的分布式缓存并不要求它存储的数据仅限于“共享”#34;数据。但是你必须从数据库中读取数据并将其存储在缓存中,这需要时间。
一些替代方案:
分区主题有很多变化......
您的网络应用是否负载均衡? Web层也有缓存选项 - ASP.NET对象缓存是一个很好的起点。
答案 1 :(得分:0)
您的网络客户端可能会多次请求相同的数据(对于给定的用户)。因此,缓存可以在这种情况下带来好处。
但是在实施一个巨大的缓存解决方案之前,你真的需要查看特别慢或执行了很多次的查询,看看你是否可以以任何方式优化它们。
然后看看升级你的数据库机器。
答案 2 :(得分:0)
我读了一篇很好的文章,讲述了MySpace增长巨大时的性能问题。
您可以找到文章here。
引用该文章的一句话引人注目:
添加缓存服务器是“我们应该做的事情 从一开始,但我们增长太快,没有时间 坐下来做,“Benedetto补充说。”
如果您的数据库服务器出现问题,请考虑对数据进行分区并利用数据库服务器场来分散负载。想想SSD吧!它们确实可以加速您的数据库访问代码。
答案 3 :(得分:0)
根据您的数据动态情况,您可以考虑使用Fragment Caching。这将缓存页面的HTML而不是数据,因此如果数据量禁止缓存,那么这可能对您有用