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  

不是主要问题,但顺便说一句,如果您能够在 Snow Leopard 上为 MAMP 1.9 编译 Memcache,请告诉我诀窍。

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

在我看来,Memcache 的优势在于是项目的首席开发人员和我们的系统管理员选择的那个。它的缺点是在 Mac 上尝试设置和编译完全是 foobar。:-^)

我很想听听任何可以列举每个(甚至其中一个)其他缓存技术的优缺点的人。它们最好用在哪里,如何最好地使用它们。等等。

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

非常感谢您花时间扩展我的知识。- 亚历克斯。

4

2 回答 2

32

首先,php 的操作码缓存器列表。

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

APC、EAccelerator、XCache 和其他都是非分布式的,这意味着您只能将数据存储在本地 Web 服务器上。然而,所有这些都是操作码缓存器,可以提高 PHP 应用程序的性能。大多数,不包括 EAccelerator(在当前版本中)也可以存储数据。

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


编辑 1我同意在 MAMP 上设置 APC、Memcache 非常烦人。然而,那里有处理此类的教程。


编辑 2另外,关于您的应用程序的最佳操作码缓存器实际上取决于您使用的服务器。有些在某些系统上工作得更好。它还取决于您的应用程序的大小和规模以及缓存器的执行方式。


编辑 3非常有趣的文章,关于比较几个不同缓存器的性能。(这篇文章似乎写于 2006 年,不应真正用作当前参考)

于 2010-09-23T06:05:38.337 回答
3

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

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

于 2014-02-15T11:25:32.067 回答