1.服务端安装
先去下载最新版memcached源码包,解压
[root@localhost etc]# cd /usr/local/src/
[root@localhost src]# wget http://www.memcached.org/files/memcached-1.5.12.tar.gz
[root@localhost src]# tar -zxvf memcached-1.5.12.tar.gz
编译安装
[root@localhost src]# cd memcached-1.5.12
[root@localhost memcached-1.5.12]# ./configure --prefix=/usr/local/memcached
报错了,提示缺少依赖libevent
checking for libevent directory... configure: error: libevent is required. You can get it from http://www.monkey.org/~provos/libevent/
If it's already installed, specify its path using --with-libevent=/dir/
去下载安装最新版libevent
[root@localhost src]# wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz
[root@localhost src]# tar -zxvf libevent-2.1.8-stable.tar.gz
[root@localhost src]# cd libevent-2.1.8-stable
[root@localhost libevent-2.1.8-stable]# ./configure
[root@localhost libevent-2.1.8-stable]# make && make install
再次编译安装memcached
[root@localhost libevent-2.1.8-stable]# cd ../memcached-1.5.12
[root@localhost memcached-1.5.12]# ./configure --prefix=/usr/local/memcached
[root@localhost memcached-1.5.12]# make && make install
启动memcached
[root@localhost memcached-1.5.12]# /usr/local/memcached/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 12000
参数的意义
- -d选项是启动一个守护进程
- -m是分配给Memcache使用的内存数量,单位是MB
- -u是运行Memcache的用户 -l是监听的服务器IP地址
- -p是设置Memcache监听的端口,最好是1024以上的端口
- -c选项是最大运行的并发连接数,默认是1024
- -P是设置保存Memcache的pid文件
又遇到一个报错,找不到类库
/usr/local/memcached/bin/memcached: error while loading shared libraries: libevent-2.1.so.6: cannot open shared object file: No such file or directory
找到这个类库的位置,然后创建软链接
[root@localhost memcached-1.5.12]# find / -name libevent-2.1.so.6
/usr/local/lib/libevent-2.1.so.6
/usr/local/src/libevent-2.1.8-stable/.libs/libevent-2.1.so.6
[root@localhost memcached-1.5.12]# ln -s /usr/local/lib/libevent-2.1.so.6 /usr/lib64/libevent-2.1.so.6
再次启动,成功
[root@localhost memcached-1.5.12]# /usr/local/memcached/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 12000
[root@localhost memcached-1.5.12]# ps -ef | grep memcached
root 19790 1 0 06:11 ? 00:00:00 /usr/local/memcached/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 12000
root 19832 8633 0 06:12 pts/0 00:00:00 grep --color=auto memcached
2.客户端安装
libmemcacahed安装
Libmemcached是一个开源的Memcached客户端库,其内部实现了分布式管理、内存池等功能。通过API的形式提供出来,使用程序员可以专心上层业务逻辑,避免底层与memcached交互的细节,所以Libmemcached编译,安装之后就会以动态库的方式提供出来给程序员调用。
[root@localhost src]# wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
[root@localhost src]# tar -zxvf libmemcached-1.0.18.tar.gz
[root@localhost src]# cd libmemcached-1.0.18
[root@localhost libmemcached-1.0.18]# ./configure --prefix=/usr/lib/libmemcached
[root@localhost libmemcached-1.0.18]# make && make install
安装php-memcached扩展
下载php-memcached源码
[root@localhost src]# cd /usr/local/src/php-7.0.30/ext/
[root@localhost ext]# git clone https://github.com/php-memcached-dev/php-memcached.git memcached
[root@localhost ext]# cd memcached/
[root@localhost memcached]# git checkout php7
这里需要用到phpize来扩展php扩展模块
[root@localhost memcached]# /usr/local/php/bin/phpize
[root@localhost memcached]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached=/usr/lib/libmemcached --disable-memcached-sasl
[root@localhost memcached]# make && make install
编译成功
Build complete.
Don't forget to run 'make test'.Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
可以看到已经生成了memcached.so文件了
[root@localhost memcached]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/
memcached.so opcache.a opcache.so
下面要在php.ini 中添加以下内容:
extension=memcached.so
重新加载一下php配置文件,我的环境是LNMP所以reload一下php-fpm就好
[www@localhost lib]$ systemctl reload php-fpm
已经可以看到扩展安装成功啦!!
使用php简单操作memcached
<?php
echo '<pre>';
$m = new Memcached();//实例化Memcached类
$arr = [['127.0.0.1', 12000]];
$m->addServers($arr);//向连接池中添加一个memcache服务器
$result = $m->set('test', 'hello', 3600);//设置缓存值,有效时间3600秒,如果有效时间设置为0,则表示该缓存值永久存在的(系统重启前)
var_dump($result);
$result = $m->get('test');//从服务端检回一个元素
var_dump($result);
$result = $m->delete('test');//从服务端删除一个元素
var_dump($result);
memcache还有很多命令,这里只展示了最基本的命令