1

每当我需要缓存一些信息时,我都依赖时间戳和 MySQL,将数据存储到数据库中并以这种方式获取。我刚刚阅读了有关 APC 的信息。

APC 要容易得多,但是除了更少的 SQL 和更清晰的代码之外,是否值得将我以前的缓存方法转换为 APC?

4

3 回答 3

2

如果您已经有一个数据库正在运行并完成大部分工作,那么提高性能的第一步就是对数据库进行适当的调整。正确配置的 MySQL 非常快。显然在某个时间点它已经不够快了,需要进一步的缓存。缓存时要考虑的一件事是您的数据可能不再一致。这意味着您可能会更新主存储(数据库)中的数据,但其他人会读取过时的缓存条目

现在您已经提到 APC 作为一种可能的解决方案:APC 是两个相关但不同的东西:

  • PHP 脚本的操作码缓存
  • PHP 用户数据的共享 memorz 缓存

操作码缓存通过将编译后的 PHP 脚本存储在内存中来工作。因此,当请求一个站点时,PHP 解释器不必从磁盘读取文件并分析代码,而是可以直接执行它。这带来了巨大的推动作用,而且总是一件好事。

共享内存缓存接受任何 PHP 变量(嗯,有一些例外......)并将其存储在系统的共享内存中,因此同一台机器上的所有 PHP 进程都可以读取它。因此,如果您将数据库查询的结果存储在 APC 中,您可以节省时间,因为与查询数据库(将查询发送到不同的机器、解析、执行、发送结果)相比,访问共享内存非常快...... ) 但正如开始时所说,您必须注意数据可能已过时。还要注意所有数据都存储在内存中。因此,根据可用 RAM 的数量,可以存储的内容存在限制。另一个很大的缺点是数据仅存储在内存中。这意味着无论何时系统出现故障,缓存都会为空,并且其中的所有内容都将丢失。

于 2012-12-15T11:49:19.513 回答
1

一般来说,APC 会比 MySQL 快得多,因此值得花时间研究它并考虑从一个系统切换到另一个系统。而且,正如您所提到的,您将向数据库发出更少的 SQL 查询。

可以通过谷歌找到更多信息,我遇到了以下内容:

http://www.mysqlperformanceblog.com/2006/08/09/cache-performance-comparison/

于 2012-12-15T10:54:31.930 回答
1

从字面上回答这个问题,是的。Mysql 不是缓存,APC 是,因此更好。

Mysql 是一种在其之上实现缓存的存储选项,但是您正在使用您提到的那些时间戳以及您正在使用它们执行的任何逻辑来实现缓存。APC 是数据和代码缓存的完整实现。

性能方面,访问本地 APC 缓存总是比访问 mysql 数据库快得多。关键字是local,APC 不是分布式的(据我所知),所以如果你想共享你的缓存,你需要一个外部缓存系统,比如 memcached。

于 2012-12-15T11:25:16.477 回答