我试图更好地理解缓存引擎的差异,以及哪些可以与其他引擎堆叠。现在我们有两个Web服务器和一个单独的DB服务器。我们将在TCP上使用Redis,以便两个Web服务器共享相同的缓存。我对Varnish或eAccelerator很感兴趣,因为我知道eAcceleerator是一个php缓存引擎,而Redis类似于Memcached是一个db缓存,所以这两者应该叠加?瓦尼什呢?据我所知,Memcached和Redis是互斥的。
据我所知,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的对话(也可以查看)。此外,您可能需要考虑将nginx添加到混合中,请参阅此。
希望对有所帮助