写在前面
-
Memcached
不同于Memcache
,二者有区别,前者性能优于后者,同时在配置PHP
时候也不同 - 相对于
Redis
和Mongodb
,Memcached
缓存技术并不过时,各有优劣 - 注意实在
Nginx
下,非Apache
,Memcached
在两者中配置也不同 - 配置均为源码编译安装,并非
yum
- 服务器环境:
Nginx1.8.0
、PHP5.4
详细过程
- 首先确保服务器下安装了
ftp
服务,推荐vsftpd
- 在
ftp
客户端新建文件夹soft
,分别下载:memcached-1.4.34.tar.gz
、libevent-2.0.22-stable.tar.gz
,可去官网下载最新的二者的包,放在soft
文件下,同时上传至服务器[root@VM_107_98_centos /]#
目录下 - 安装
libevent
进入压缩包所在目录
# cd /soft/
解压
# tar xzfv libevent-2.0.22-stable.tar.gz
进入目录
# cd libevent-2.0.22-stable
编译安装
# ./configure
# make
# make install - 安装
memcached
进入压缩包所在目录
# cd /soft/
解压
# tar xzfv memcached-1.4.34.tar.gz
进入目录
# cd memcached-1.4.34
编译,安装
# ./configure
# make
# make install - 启动
memcached
服务
# /usr/local/bin/memcached -d -m 64 -u root -p 11211 -P /tmp/memcached.pid
此时必然报错如下:
error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
加载路径出错了,用下面的命令查看下它是从哪里加载的(注意此步骤需要在memcached-1.4.34
目录下执行)
# LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
截取部分输出
6394: trying file=/lib64/tls/x86_64/libevent-2.0.so.5
6394: trying file=/lib64/tls/libevent-2.0.so.5
6394: trying file=/lib64/x86_64/libevent-2.0.so.5
6394: trying file=/lib64/libevent-2.0.so.5
配置指向路径(此步骤很重要,注意跟上面最后一个是对应的)
# ln -s /usr/local/lib/libevent-2.0.so.5 /lib64/libevent-2.0.so.5
再次执行启动Memcached服务,可以启动成功
# /usr/local/bin/memcached -d -m 64 -u root -p 11211 -P
测试通信是否正常
# telnet 127.0.0.1 11211
输出如下
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
说明启动成功,Ctrl + ]
然后quit
退出telnet
- 安装完成memcached后会自动在
/usr/local/php5.4/lib/php/extensions/no-debug-non-zts-20100525
目录下生成memcached.so
,检查下php.ini
中php
的拓展路径是否配置,是否配置正确,正确的如下
extension_dir = "/usr/local/php5.4/lib/php/extensions/no-debug-non-zts-20100525/"
extension = "imagick.so"
extension = "memcached.so" - 重启
php-fpm
(Nginx
服务器需要重启php-fpm
) - 查看是否配置成功
Memcached
模块,成功如下
用PHP
进行测试
-
简单测试源码
<?php $m = new Memcached(); // 传入一台服务器 $m->addServer('127.0.0.1','11211'); // 传入多台服务器 // $servers = array( // array('127.0.0.1','11211'), // array('127.0.0.2','11211') // ); // $m->addServers($servers); // 查看一下运行状态 echo $m->getResultCode(); // 首先定义要存入缓存的数组 $data = array( 'key1'=>'value1', 'key2'=>'value2' ); // * setMulti() // * 第一个参数代表传入的数组,第二个参数代表生效时间,0代表永 $m->setMulti($data,30); //定义获取缓存的key值得数组 $get = array('key1','key2'); /* * getMulti() * 传入需要获取缓存的key值 */ $result = $m->getMulti($get); var_dump($result); ?>
更多
Memcached
的PHP
操作请自行Google or Baidu
总结
- 过程全记录,相比网络现存教程,更完整,更直白
- 接下来是
Redis
和Mongodb