Drupal7中配置Memcache方法详解
Memcache的配置就不多说,drupal由于模块较多,数据库调用频繁,因此memcache是drupal站点中必备的配置,本文大概列一下Drupal7中关于memcache的配置情况,以方便大家查阅。
1.安装memcache服务以及启动memcached.
2.安装drupal的memcache模块.(http://drupal.org/project/memcache)
3.配置settings.php
实例代码如下:
$conf [ 'cache_backends' ][] = 'sites/all/modules/memcache/memcache.inc' ; // The 'cache_form' bin must be assigned no non-volatile storage. $conf [ 'cache_class_cache_form' ] = 'DrupalDatabaseCache' ; $conf [ 'cache_default_class' ] = 'MemCacheDrupal' ; $conf [ 'memcache_key_prefix' ] = 'something_unique' ; 注意,需要将memcache.inc的文件路径写正确,如Drupal模块目录组织方式总结中提到,我们一般将memcache模块会放置在contrib文件夹下面,因此路径可能是 sites/all/modules/contrib/memcache/memcache.inc,此外memcache_key_prefix最好设置一下。
4.多个memcachd服务。
默认情况下,如果不配置memcache_servers以及memcache_bins的话,Drupal会认为只有一个server,即127.0.0.1:11211,如果有多个memcache实例的话,需要添加如下配置,代码如下:
$conf [ 'memcache_servers' ] = array ( '10.1.1.1:11211' => 'default' , '10.1.1.1:11212' => 'default' , '10.1.1.2:11211' => 'default' , '10.1.1.3:11211' => 'cluster2' , '10.1.1.4:11211' => 'cluster2' ); $conf [ 'memcache_bins' ] = array ( 'cache' => 'default' , 'cache_filter' => 'cluster2' , 'cache_menu' => 'cluster2' ); 一切就绪,最后讲解一下单台机器如何配置多个memcache实例,即单台机器的memcache集群搭建。
我们需要修改2个文件,一个是启动脚本/etc/init.d/memcached-multi,另一个是配置文件/etc/sysconfig/memcached,代码如下:
/etc/sysconfig/memcached
是用来配置多个memcache实例的大小,代码如下:
PORT= "11211" USER="memcached" MAXCONN="1024" CACHESIZE="512" OPTIONS="" MULTIBUCKET="2" CACHESIZEARRAY[1]="1024" CACHESIZEARRAY[2]="128" /etc/init.d/memcached-multi 是用来启动memcache集群,(start、stop、restart),代码如下:
#! /bin/sh # # chkconfig: - 55 45 # description: The memcached daemon is a network memory cache service. # processname: memcached # config: /etc/sysconfig/memcached # pidfile: /var /run/memcached/memcached.pid # Standard LSB functions #. /lib/lsb/init-functions # Source function library. . /etc/init.d/functions PORT=11211 USER=memcached MAXCONN=1024 CACHESIZE=64 OPTIONS="" MULTIBUCKET="" if [ -f /etc/sysconfig/memcached ];then . /etc/sysconfig/memcached fi [ -z "$MULTIBUCKET" ] && MULTIBUCKET=1 # Check that networking is up. . /etc/sysconfig/network if [ "$NETWORKING" = "no" ] then exit 0 fi RETVAL=0 prog="memcached" start () { echo -n $ "Starting $prog: " # insure that /var