You are here

Drupal专业开发指南 第22章 Memcached(内存缓存)

g089h515r806 的头像
Submitted by g089h515r806 on 星期五, 2009-09-04 11:09

当数据必须使用缓慢的设备比如一个硬盘进行交互时,系统通常会遇到一个性能问题。如果你能够为数据绕过这一操作,而且你能够承受得起数据的丢失(比如session数据),那会怎么样呢?此时我们可以使用memcached,这个系统将读写操作都放到内存中进行。与本章中介绍了其它解决方案相比,Memcached更加复杂,而且更难设定。,但是当你的系统需要在可升级性方面有所提高时还是值得考虑这一方案的。

Drupal有一个内置的数据库缓存,用来缓存页面,菜单,和其它Drupal数据,而MySQL数据库也能够缓存常用查询,但是当你的数据库不堪重负时那会怎样?你可以再买一台数据库服务器,或者你也可以直接将数据存放在内存中而不是存在数据库中,从而完全减轻数据库的重负。Memcached库(see http://www.danga.com/memcached/)和PECL Memcache PHP 扩展 (see http://pecl.php.net/package/memcache)都是专门为你实现这一点的工具。
Memcached系统将任意数据都保存在随机存取的内存中,而且能够迅速的从中读取数据。使用这种方式比任何使用磁盘的方式在性能上都要好一些。Memcached存储对象并使用唯一的键来引用对象。哪些对象应该被放到memcached中,这由程序员决定。对放到Memcached中的对象,Memcached不知对象的类型和本质;在它眼中,一切都是一堆等待取回的带有键的比特数据。
系统的简单性是它的优点。当为Drupal编写支持memcached的代码时,开发者可以决定对引起瓶颈的主要因素进行缓存。这可能是,频繁出现的数据库查询的查询结果,比如路径查找,或者是更复杂的构造比如完整加载的节点和分类词汇,这些都需要许多数据库查询和大量的PHP处理才能得到。
Drupal的memcache模块和使用PECL Memcache接口的Drupal专有API可在Drupal的Memcache项目中找到(参看 http://drupal.org/project/memcache)。
 

Drupal版本: