我要为我的项目创建一个集群。
我混淆了我应该在我的系统上使用哪种策略。
有许多Web App
台服务器和database
台服务器。
查询需要几秒钟才能完成。
所以我宁愿尽可能多地使用缓存。
群集在AWS上进行自动缩放控制。
那么,我应该将所有缓存放在redis server
中并让所有Web应用程序访问它吗?
答案 0 :(得分:2)
没有银弹可以一劳永逸地解决你的缓存问题。缓存是提高性能的众多技术。
一些最重要的技术是:
(http://guides.rubyonrails.org/caching_with_rails.html#fragment-caching) - 避免昂贵的渲染操作 - Model caching
实际存储缓存的位置取决于它的缓存类型。
将缓存存储在共享Redis服务器中可能会在某些情况下提供更好的性能,因为您访问冷缓存的请求会更少。但是,从缓存服务器扫描跨网站的数据将比单个应用程序服务器上的数据慢。
总是要考虑权衡。
答案 1 :(得分:1)
最大的说法是唯一正确的答案:没有正确答案。
缓存的目的是限制对服务器的可行请求量。 我通常做的事情:
再次进行权衡。陈旧数据永远不会100%罚款。缓存是一种无法解决所有问题的绑定。它只能帮助减少损坏(进入服务器的成本)。
答案 2 :(得分:0)
首先,在不知道您的项目有什么类型的请求(即多个用户的共享数据与每个用户都有其独特数据)的情况下,很难对缓存设置提出真实的建议。
如果查询需要多秒才能完成,您是否首先尝试解决此问题并尝试优化它们?甚至可能将MongoDB中的技术转换为常规SQL存储?缓存只会有助于后续调用,而不是第一次调用。
正如其他人所说,在某些情况下,缓存可能有所帮助,但是如果您重复访问相同的访问权限,那么启动并运行并启动rails应用程序的多个实例会增加设置的复杂性并且缓存策略只会有所帮助数据