1、安装Memcached
1.1、操作系统版本
操作系统:Linux CentOS 5.2。
1.2、安装Memcached1.4.5
a)创建Memcached用户
# useradd memcached –s /sbin/nologin
b)由于Memcached需要Linux 扩展库Libevent,所以我们首先要安装libevent
# tar -zxvf libevent-2.0.4-alpha.tar.gz
# cd libevent-2.0.4-alpha
# ./configure -prefix=/usr/local/libevent
# make
# make install
注:设置安装到/usr/local/libevent目录下
c)安装Memcached:
# tar –zxvf memcached-1.4.5.tar.gz
# cd memcached-1.4.5
# ./configure -prefix=/usr/local/memcached
# make
# make install
d)启动Memcached
我们前面./configure的时候设置了安装目录为/usr/local/memcached,所以启动命令如下:
# usr/local/memcached/memcached -d -u nobody -m 512 127.0.0.1 -p 11211
注:memcached启动参数描述:
-d :启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB,
-u :运行Memcache的用户
-l :监听的服务器IP地址
-p :设置Memcache监听的端口,默认是11211 注:-p(p为小写)
-c :设置最大并发连接数,默认是1024
-P :设置保存Memcache的pid文件 注:-P(P为大写)
如果要结束Memcache进程,执行:kill cat pid文件路径
e)设置开机启动
为了让webserver开机启动memcache服务,我们还需要配置rc.local,请添加以下内容:
/usr/local/memcached/bin/memcached -d -m 100 -u root -p 11211 -c 1000 -P /tmp/memcached.pid
2、配置PHP调用Memcached
2.1安装php的memcached模块
为了让php能调用memcached的接口,我们需要安装php的memcached扩展模组
# tar –zxvf memcache-2.2.4.tgz
# cd memcache-2.2.4
# whereis phpize //查找本地的phpize目录,本地假设为/usr/bin/phpize
# /usr/bin/phpize
# ./configure –with-php-config=/usr/bin/php-config
# make
# make install
2.2 配置php.ini
配置php.ini之前,请先检查/etc/目录下是否存在php.d目录。如果该目录存在,再检查php.d目录下是否有memcached.ini配置文件。如果有则不需要配置php.ini。本2.2配置步骤跳过。
若无php.d那么请打开php.ini,增加如下一行来调用memcached模块服务。
extension = memcache.so
保存后,重启apache
# service httpd restart
2.3 PHP的测试程序
简单的程序
<?php
phpinfo();
?>
运行该php,页面应该能查找到memcached的模块信息
2.4 Php Memcached模块的常规操作
<?php
//连接Memcache
$mem = new Memcache;
$mem->connect(“localhost”, 11211);
//保存数据
$mem->set(‘key1’, ‘This is first value’, 0, 60);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val .”<br>”;
//替换数据
$mem->replace(‘key1’, ‘This is replace value’, 0, 60);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val . “<br>”;
//保存数组数据
$arr = array(‘aaa’, ‘bbb’, ‘ccc’, ‘ddd’);
$mem->set(‘key2’, $arr, 0, 60);
$val2 = $mem->get(‘key2’);
echo “Get key2 value: “;
print_r($val2);
echo “<br>”;
//删除数据
$mem->delete(‘key1’);
$val = $mem->get(‘key1’);
echo “Get key1 value: ” . $val . “<br>”;
//清除所有数据
$mem->flush();
$val2 = $mem->get(‘key2’);
echo “Get key2 value: “;
print_r($val2);
echo “<br>”;
//关闭连接
$mem->close();
?>