APC,eAccelerator,XCache,memcached,Redis的区别

网络营销人用WordPress建站、做电商网络推广,给网站提升速度,能在一定程度上提升SEO效果。

在安装了VestaCP控制面板之类的Linux系统之后,可以选择一些缓存扩展来提高PHP的速度。

CACHE缓存扩展加速

经常会看到的是这些缓存扩展:

  1. APC
  2. eAccelerator
  3. XCache
  4. memcached
  5. Redis

它们之间有什么区别?作用是什么?我们该如何选择?

陈沩亮会在本文给你答案。

一、Alternative PHP Cache(APC缓存)

Alternative PHP Cache(APC缓存)

Alternative PHP Cache(APC缓存)是PHP的开源缓存工具,用于缓存Opcode(目标文件)PHP中间码。

APC的缓存,分为2部分:

  1. 系统缓存
  2. 用户数据缓存

系统缓存是自动使用的:

  • 这意味着APC缓存PHP文件源代码的编译结果,然后再次调用时间戳。
  • 如果它尚未过期,就使用缓存代码运行它。
  • 默认缓存为3600(一小时)。

但这仍然浪费了大量的CPU时间。

因此,您可以将系统缓存设置为永不过期的php.ini文件里,设置system缓存为永不过期(apc.ttl=0)。

但是,如果执行此操作,则需要在更改PHP代码后,重新启动Web服务器(例如,apache)。

目前,APC性能测试一般是指这一层的缓存;

从字面上看,Alternative PHP Cache(APC缓存)也可以被视为内存缓存扩展,

它是一个数据库缓存扩展。

二、eAccelerator

eAccelerator是一个免费的开源PHP加速器。

  • 优化和动态内容缓存,可以提高PHP脚本的缓存性能。
  • 因此可以让PHP脚本在编译状态种,降低服务器的资源消耗。
  • 它还优化了脚本,提高执行效率,将PHP代码的效率提高1-10倍。
  • eAccelerator暂不支持PHP5.5以上的版本。

如同从文字理解的那样:eAccelerator是PHP中的加速器扩展。

三、XCache

XCache是一个开源的opcode缓冲器/优化器,可以提高服务器上PHP的性能。

  • 可以通过将编译后的PHP数据,缓存到共享内存来避免重复编译过程
  • 并且可以直接使用缓冲区,来编译代码提高速度。
  • 它通常可以将页面生成速率提高2到5倍,并减少服务器负载。

实际上,XCache是PHP加速器扩展。

四、memcached

Memcached是一个高性能的分布式内存对象缓存系统:

  • 用于动态Web应用程序以减少数据库负载。
  • 它通过在内存中缓存数据和对象,来减少数据库读取的数量,从而提供动态的、数据库驱动的网站的速度。

从文字中可以理解到:内存缓存扩展,更多用于集群服务器,主要用于分布式缓存。

Memcached被认为是数据库缓存扩展。

五、Redis

Redis是一个高性能的key-value数据库。

Redis

  • redis的出现极大地弥补了memcached等,缺乏keyalue存储的问题。
  • 在某些情况下,它可以补充关系数据库。
  • 在许多情况下,Redis经常和memcached做比较。

很多人认为Redis可以完全取代memcached,因为Redis数据类型更丰富,性能不在memcached之下:

  • redis有的memcached却没有;
  • memcached有redis都有。

据我所知,新浪的微博和其他周边产品依赖于Redis,可以看出它功能强大。

PHP缓存、数据库缓存扩展区别

1)PHP缓存扩展:

  • eAccelerator、XCache是PHP缓存扩展。

2)数据库缓存扩展:

  • Redis、memcached、APC缓存是数据库缓存扩展。

(通常2者只需要安装其中1个就行了,不要贪心)

有人测试后,发现Cache数据缓存超过一定阈值,APC性能不如mcached缓存。

因此,在选择缓存扩展时,一些人会选择 xcache + memcached 的组合,或是xcache + redis 的组合。

如果在同时安装多个缓存扩展出现错误,建议只安装一个缓存扩展,其它的卸载。

PHP加速器比较总结

  • 通过测试,eAccelerator是请求时间和内存使用的最佳组合,但eAccelerator暂不支持PHP5.5以上的版本。
  • 通过测试,有使用加速器的速度,比没有加速器快3倍。

以上就是APC、eAccelerator、XCache、memcached、Redis之间的作用和区别。