序言
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
当然memcached分为服务端和客户端。服务端用来存放缓存,客户端用来操作缓存。
客户端有两种常见的实现方式。
第一种是用php代码根据服务端的通讯规则自己写一个。
第二种是安装php扩展库(php-memcached)。
一、准备工作
创建目录source和package,分别用来放源码和编译后的文件
# mkdir /source/ # mkdir /package/
二、memcached(服务端篇)
首先先安装memcached依赖库libevent。
2.1 安装libevent
[官方网站] http://libevent.org/
命令流程:
# cd /source/ # wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz # tar -zxvf libevent-2.0.22-stable.tar.gz # cd libevent-2.0.22-stable # ./configure --prefix=/package/libevent # make # make install
2.2 安装memcached
[官方网站] http://memcached.org/
命令流程:
# cd /source/ # wget http://memcached.org/files/memcached-1.4.25.tar.gz # tar -zxvf memcached-1.4.25.tar.gz # cd memcached-1.4.25 # ./configure --prefix=/lnmp/memcached --with-libevent=/package/libevent # make # make install
本章总结:
通过以上操作就很简单的把memcached服务端编译好了。这时候就可以打开服务端进行工作了。
# /lnmp/memcached/bin/memcached -d -m 2048 -l 127.0.0.1 -p 11211 -u root -c 1024 –P /tmp/memcached.pid 启动参数说明: -d 选项是启动一个守护进程。 -m 分配给Memcache使用的内存数量,单位是MB,默认64MB。 -l 监听的IP地址。(默认:INADDR_ANY,所有地址) -p 设置Memcache的TCP监听的端口,最好是1024以上的端口。 -u 运行Memcache的用户,如果当前为root的话,需要使用此参数指定用户。 -c 选项是最大运行的并发连接数,默认是1024。 -P 设置保存Memcache的pid文件。
三、客户端篇:php代码
这种方法实现客户端最简单,直接下载我写的《SL_Memcached》类库include到自己的项目里调用相关对象就行了。
当然,你也可以用其他语言实现。这里就不在讲了。
使用方法如下:
<?php include('memcached.class.php');
memcached = new SL_Memcached(); //实例化对象memcached->connect('127.0.0.1:11211'); //连接memcached服务端
memcached->set('key1', '我是快乐的键值'); //设置键值
var_dump(memcached->get('key1')); //获取键值var_dump(
输出:
string(21) "我是快乐的键值"
NULL
四、客户端篇:php-memcached
4.1 安装libmemcached
[官网] http://libmemcached.org/
命令流程:
# yum install libmemcached libmemcached-devel
4.2 安装php-memcached
[官方网站] http://pecl.php.net/package/memcached
命令流程:
# cd /source/ # wget http://pecl.php.net/get/memcached-3.0.3.tgz # tar -zxvf memcached-3.0.3.tgz # cd memcached-3.0.3 # /lnmp/php/bin/phpize # ./configure --with-php-config=/lnmp/php/bin/php-config # make && make install
备注:
安装成功后会有如下类似提示:
Installing shared extensions: /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/
这说明在 /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/ 该目录下会生成memcached.so
这个就是memcached.so所在目录。我们先记住这个目录。
开始配置php-memcached
打开php.ini
# vi /lnmp/php/etc/php.ini
在合适的位置添加如下 extension = /lnmp/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so
五、常见错误总汇
5.1 Unable to load dynamic library 'memcached.so' - libmemcached.so.11: cannot open shared object file: No such file or directory in Unknown no line 0
说明:没有找到php的附加库memcached.so所需动态库libmemcached.so.11。出现上述错误一般是没有将libmemcached目录设置到环境变量里。
我们添加到环境变量LD_LIBRARY_PATH里就搞定了。
# export LD_LIBRARY_PATH=/package/libmemcached/lib:$LD_LIBRARY_PATH