115

我正在尝试加快我的基准测试(3 层网络架构),并且我有一些与 Memcache(d) 和 Varnish 相关的一般性问题。

  • 有什么区别?
    在我看来,Varnish在 Web 服务器后面,缓存网页,不需要更改代码,只需要配置。
    另一方面,Memcached是通用缓存系统,主要用于缓存来自数据库的结果,并且确实需要更改get方法(第一次缓存查找)。

  • 我可以同时使用吗?前端 Web 服务器中的清漆和用于数据库缓存的 Memcached?

  • 什么是更好的选择?

    (场景 1 - 主要是写入,
    场景 2 - 主要是读取,
    场景 3 - 读取和写入相似)

4

2 回答 2

277
  • Varnish 在网络服务器前面;它用作缓存的反向http代理。
  • 您可以同时使用两者。
  • 主要是写——清漆需要清除受影响的页面。这将导致修改页面的开销和很少的好处。
  • 主要阅读——Varnish 可能会涵盖大部分内容。
  • 类似的读写——Varnish 会为你提供很多页面,Memcache 会为混合了已知数据和新数据的页面提供信息,让你更快地生成页面。

可能适用于 stackoverflow.com 的示例:添加此评论会使页面缓存无效,因此必须从 Varnish 中清除该页面(以及我的个人资料页面,这可能不值得一开始缓存。记住使所有受影响的页面可能有点问题)。然而,所有的评论仍然在 Memcache 中,所以数据库只需要写这个评论。数据库不需要做任何其他事情来生成页面。所有评论都由 Memcache 提取,并且页面被重新缓存,直到有人再次影响它(也许通过投票我的答案)。同样,数据库写入投票,所有其他数据都从 Memcache 中提取,并且生命很快。

Memcache 使您的数据库免于进行大量读取工作,Varnish 通过减少生成页面的频率来使您的动态 Web 服务器免于 CPU 负载(如果不使用 Memcache,也可以减轻数据库负载)。

于 2010-12-20T13:50:34.277 回答
33

我的经验来自将 Varnish 与 Drupal 一起使用。用尽可能简单的术语,这是我的回答:

通常,Varnish 适用于未经身份验证(通过 cookie)的流量,而 memcached 将缓存经过身份验证的流量。

所以两者都用。

于 2011-08-07T03:47:09.467 回答