负载平衡(4)–CentOS 5 之 Memcached

按照Dena的提示,可以把Viewer的信息保持24小时。之后必须删除掉用户信息。本来考虑就用Smarty的Caching,后来发现人家只是支持页面的Cache。对于那种需要每次检索一大堆数据,又对实时性要求不高的页面是很合适的。之前的网站也有用过。这次我们不需要这种Cache,需要的是Memcached那种Key-Object的Map存储。而且如果把Memcached发到一个网络上的公用机器上,就可以很容易实现多台Web Server共享同一个Cache信息。

说干就干,开始安装Memocached。虽然上个月,安装过Windows版本的,但是CentOS上还是碰到一些小问题。

  1. 安装Libevent和memcached

    # yum install libevent-devel
    # cd /usr/local/src
    # wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
    # tar xvfz memcached-1.4.5.tar.gz
    # cd memcached-1.4.5
    # ./configure
    # make
    # make install

  2. 启动memcached

    # memcached -d -u www -m 2048

    意思是以www用户启动缓存为2G的memcached
    启动部分参数说明

    选项说明
    -p 监听的TCP端口 (缺省: 11211)
    -d 以守护进程方式运行Memcached
    -u 运行Memcached的账户,非root用户
    -m 最大的内存使用, 单位是MB,缺省是 64 MB
    -c 软连接数量, 缺省是 1024
    -v 输出警告和错误信息
    -vv 打印客户端的请求和返回信息
    -h 打印帮助信息
    -i 打印memcached和libevent的版权信息

  3. 安装PHP的memcached扩展

    # pecl  install memcached

    并按照提示修改PHP.ini,添加extension=memcache.so。记得重启Apache

  4. 测试程序
    和上次Windows安装一样
    [sourcecode language=’php’]
    connect(“localhost”,11211);

    echo “Server’s version: ” . $memcache->getVersion() . “
    \n”;

    $tmp_object = new stdClass;
    $tmp_object->str_attr = “test”;
    $tmp_object->int_attr = 123;

    $memcache->set(“key”,$tmp_object,false,10);
    echo “Store data in the cache (data will expire in 10 seconds)
    \n”;

    echo “Data from the cache:
    \n”;
    var_dump($memcache->get(“key”));
    ?>
    [/sourcecode]