Memcache、APC、XCache以及其他我没听说过的替代品之间的区别

22

最近在工作中,我们开始设计一款能够“大规模”运行的应用程序(我们正在为每天可能产生数百万次点击的潜力进行开发)。其中一位高级开发人员和系统管理员已经在服务器上设置了Memcache。

据我所知,Memcache会将查询结果和某些表格保存在内存中,持续X时间,并保持一切正常。

似乎Memcache的一个缺点是,我无论如何都不能在我的本地开发环境中成功地设置它。我已经按照几个不同的指南进行了编译。大多数步骤似乎都能正常运行,但在PHPLoad上出现了这个错误:

 [11-Sep-2010 16:02:30] PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so' - dlopen(/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/memcached.so, 9): image not found in Unknown on line 0  

除了主问题之外,如果您已经成功编译过 Memcache 1.9 版本在 Snow Leopard 上的 MAMP,请告诉我诀窍。

我的问题是关于各种Web缓存技术之间的区别。我看到了Memcache、APC和Xcache的提及(在这里:手动将mysql查询结果缓存到txt文件中),但不知道它们之间的优缺点和区别。

在我看来,Memcache的优点是这是项目的首席开发人员和我们的系统管理员选择的。它的缺点是在 Mac 上尝试设置和编译时非常困难。 :-^)

我很想听听任何能列举出每种(或其中一种)其他缓存技术的优缺点以及最佳使用方式的人的意见。它们在哪里最好使用,如何最好使用等等。

我认为这都是有用的信息。

非常感谢抽出时间为我扩展知识的人。 - Alex。

2个回答

32

首先,这是一份有关PHP操作码缓存器的列表

其次,Memcache/MemcacheD不是一个操作码缓存器,它是一个分布式内存缓存系统。它不能提高您的PHP代码速度/性能,只能用于存储数据。

APC、EAccelerator、XCache和其他PHP操作码缓存器都是非分布式的,也就是说,您只能在本地Web服务器上存储数据。但是,所有这些都是操作码缓存器,可以改善您的PHP应用程序的性能。除EAccelerator(当前版本)外,大多数还可以存储数据。

通常我会选择APC作为操作码缓存器(据报道,它将被包含在PHP 6核心中)。但是如果我的网站有多个Web服务器,我也会使用MemcacheD。


编辑1 我同意在MAMP上设置APC、Memcache非常麻烦。不过,有很多相关的教程可以参考。


编辑2 对于您的应用程序来说,最好的操作码缓存器取决于您使用的服务器。有些在某些系统上效果更好。此外,缓存器的性能也取决于应用程序的规模和大小。


编辑3 这里有一篇非常有趣的文章,比较了一些不同缓存器的性能。(该文章似乎是在2006年撰写的,不能作为当前参考)


非常感谢!这真的帮助我整理了思路 :) - Alex C

3

APC是一个操作码缓存。它将存储解析后的PHP代码,这样每次不需要重新解析您的PHP文件。

Memcache是一个数据缓存。它将数据存储为键值对。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接