我正在尝试加快我的基准测试(3层Web架构),并且我有一些与Memcache(d)和Varnish相关的一般性问题。
有什么区别?
在我看来, Varnish 是Web服务器的后面,缓存网页,不需要更改代码,只需配置。
另一方面, Memcached 是通用缓存系统,主要用于缓存数据库中的结果,并且需要更改get
方法(第一次缓存查找)。
我可以同时使用吗?前面的Web服务器和Memcached中的Varnish用于数据库缓存?
什么是更好的选择?
(方案1 - 主要是写,
方案2 - 主要是阅读,
场景3 - 读写类似)
答案 0 :(得分:265)
可以应用于stackoverflow.com的示例:添加此注释使页面缓存无效,因此必须从Varnish(以及我的配置文件页面)清除此页面,这可能不值得缓存开始。记住使所有受影响的页面无效可能有点问题)。但是,所有注释仍然在Memcache中,因此数据库只需编写此注释。数据库无需其他任何操作来生成页面。所有的评论都是由Memcache提取的,页面会被记录下来,直到有人再次影响它(也许是通过投票我的答案)。同样,数据库写入投票,所有其他数据都从Memcache中提取,生命很快。
Memcache使您的数据库不会进行大量的读取工作,Varnish通过减少频繁生成页面来保存动态Web服务器免受CPU负载的影响(如果不是Memcache,也可以稍微减轻数据库负载)。
答案 1 :(得分:31)
我的经验来自于使用Varnish和Drupal。用尽可能简单的术语,我就是这样回答:
通常,Varnish适用于未经身份验证(通过cookie)的流量,而memcached将缓存经过身份验证的流量。
所以使用两者。