在工作中,我们最近开始为我“大规模”设计一个应用程序(我们正在努力设计每天提供数百万次点击的潜力)。其中一位高级开发人员和sysadmin已在服务器上设置了内存缓存。
据我了解,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
不是主要问题,但顺带一提,如果您已经能够在Snow Leopard上为MAMP 1.9编译Memcache,请告诉我诀窍。
我的主要问题是有关各种Web缓存技术之间的区别是什么。我已经提到过Memcache,APC和Xcache(在这里:Cache results of a mysql query manually to a txt file),但是不知道它们之间的优缺点。
在我看来,Memcache的优势在于是该项目的主要开发人员和我们的sysadmin选择的。它具有劣势的缺点,即被foobar尝试在Mac上进行设置和编译。 :-^)
我希望听到任何人都可以列举每种机器技术(甚至其中一种)的利弊的任何人。它们在哪里使用得最好,如何最好使用。等等。
我认为这都是有用的信息。
非常感谢您抽出宝贵的时间来扩展我的知识。
-亚历克斯
最佳答案
首先,列出opcode cachers for php。
第二个Memcache / MemcacheD不是操作码缓存器。它是一个分布式内存缓存系统。它不会提高您的PHP代码的速度/性能。它只能用于存储数据。
APC,EAccelerator,XCache和其他不是分布式的,这意味着您只能将数据存储在本地Web服务器上。但是,所有这些都是操作码缓存器,可以提高PHP应用程序的性能。除EAccelerator(在当前版本中)外,大多数还可以存储数据。
我通常选择APC作为操作码缓存器(据说它将包含在PHP 6的核心中)。但是,如果该站点也有多个Web服务器,则我还将使用MemcacheD。
编辑1 我同意在MAMP上设置APC,Memcache非常烦人。但是,那里有一些有关此类的教程。
编辑2 同样,针对您的应用的最佳操作码Cacher确实取决于您使用的服务器。有些在某些系统上可以更好地工作。它还取决于应用程序的大小和规模以及缓存的性能。
编辑3 关于比较几个不同的缓存器性能的非常有趣的article here。 (本文似乎写于2006年,不应真正用作当前引用)
关于caching - Memcache,APC,XCache和我未曾听说过的其他替代方案之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3692488/