我试图更好地理解缓存引擎的差异,以及哪些可以与另一个堆叠。现在我们有两个网络服务器和一个单独的数据库服务器。我们将通过 TCP 使用 Redis,以便两个 Web 服务器共享相同的缓存。我对 Varnish 或 eAccelerator 感兴趣——据我所知,eAccelerator 是一个 php 缓存引擎,而类似于 Memcached 的 Redis 是一个数据库缓存——所以这两个应该堆叠吗?那么清漆呢?据我了解,Memcached 和 Redis 是互斥的。
1 回答
据我了解,Memcached 和 Redis 是互斥的。
多半是对的。但是,如果您的数据集超出了通常可以放入 RAM(单节点)的容量,则 memcached 的扩展性比 Redis 更好,因为大多数 memcached 客户端库支持将数据分布在一组 memcached 节点之间的一致性哈希,因此来自所有节点的总 RAM节点成为您的总数据集容量;只需添加更多的 memcached 节点来增加容量。
您可以使用 Redis 进行分片(水平扩展)以支持更大的数据集,但这样做的选择是有限的。Twitter 开发了twemproxy来在一组 redis 节点之间分片 redis 键;虽然Redis 集群仍在进行中,但 twemproxy 是扩展 redis 的推荐方法。
所以使用其中一个;您不需要两者,但在任何一种情况下,web/app 服务器通常是 memcached/redis 的客户端。
我对 Varnish 或 eAccelerator 很感兴趣——据我所知,eAccelerator 是一个 php 缓存引擎。
Varnish 是一个反向缓存代理,位于您的应用程序/Web 服务器之前。它缓存整个渲染页面并大大减少应用服务器上的负载。它通常是典型 Web 堆栈中的入口点(不包括负载均衡器)。
我没有使用 eAccelerator 的经验,但根据快速研究,它与 Varnish 并不相互排斥。一个典型的堆栈可能包括与 PHP/eAccelerator 或APC的 varnish 对话(也可以查看)。此外,您可能需要考虑将 nginx 添加到组合中,请参阅此。
希望有帮助