环境: CentOS 5.4 PHP 5.2.11 lighttpd 1.4
一 下载并安装 libevent memcached
yum install -y libevent.x86_64 libevent-devel.x86_64
wget
tar -xzf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/usr/local/memcached
make && make install
二, 启动memcached
/usr/local/memcached/bin/memcached -d -m 256 -p 11211 -u lighttpd
三、PHP的memcached 客户端
有两种方法可以使 PHP 作为 memcached 客户端,调用 memcached 的服务进行对象存取操作。
1)PHP的memcache扩展模块,下载并安装
wget
cd memcache-3.0.5
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-memcache
make && make install
Installing shared extensions: /usr/local/php//lib/php/extensions/no-debug-non-zts-20060613/
edit /usr/local/php/lib/php.ini
加入:
extension_dir="/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension=memcache.so
通过phpinfo(),检查是否有memcache.
下面是一段官方网站的php测试代码:
$memcache = new Memcache;
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect");
$version = $memcache->getVersion();
echo "Server's version: ".$version."\n";
$tmp_object = new stdClass;
$tmp_object->str_attr = 'test';
$tmp_object->int_attr = 123;
$memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
echo "Store data in the cache (data will expire in 10 seconds)\n";
$get_result = $memcache->get('key');
echo "Data from the cache:\n";
var_dump($get_result);
?>
运行后输出如下:
Server's version: 1.2.6
Store data in the cache (data will expire in 10 seconds)
Data from the cache: object(stdClass)#3 (2)
{ ["str_attr"]=> string(4) "test" ["int_attr"]=> int(123) }
2)可以避开扩展、重新编译所带来的麻烦,那就是直接使用 php-memcached-client。虽然效率会比扩展库稍差一些,但问题不大。
应用示例
首先 下载 memcached-client.php,在下载了 memcached-client.php 之后,就可以通过这个文件中的类“memcached”对 memcached 服务进行操作了。
其实代码调用非常简单,主要会用到的方法有 add()、get()、replace() 和 delete(),方法说明如下:
add ($key, $val, $exp = 0)
往 memcached 中写入对象,$key 是对象的唯一标识符,$val 是写入的对象数据,$exp 为过期时间,单位为秒,默认为不限时间;
参考文档:http://hi.baidu.com/tuozhuai/blog/item/40acc3c4c64838a28226acab.html