一、memcache简介
memcached是一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。
memcached 是“分布式”的内存对象缓存系统,那么就是说,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来 任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源。
memcached在很多时候都是作为数据库前端cache使用的。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能,在大型系统中,访问同样的数据是很频繁的,memcached可以大大降低数据库压力,使系统执行效率提升。另外,memcached也经常作为服务器之间数据共享的存储媒介.
但是,使用memcached时还需要注意的是,memcached使用内存管理数据,所以它是易失的,当服务器重启,或者memcached进程中止,数据便会丢失。另外,内存容量达到指定值之后,就会自动删除不使用的缓存。所以memcached不能用来持久保存数据。
使用memcached 一般用telent或者一些一些其他语言,例如PHP,C等。memcached 默认的端口是11211。
memcached 具有惰性清理机制,是C/S架构程序,支持TCP、UDP协议。
二、配置
由于Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent。
Memcached需要libevent这个库作为驱动,所以还需要安装libevent。
libevent下载地址:https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz
memcached下载地址:http://memcached.org/files/memcached-1.5.13.tar.gz
memcache下载地址:
http://pecl.php.net/get/memcache-2.2.7.tgz
1. Memcached部署
-
安装libeven
[root@localhost ~]# wget https://github.com/downloads/libevent/libevent/libevent-2.0.20-stable.tar.gz [root@localhost ~]# tar xzf libevent-2.0.20-stable.tar.gz -C /usr/local/src/ [root@localhost ~]# cd /usr/local/src/libevent-2.0.20-stable/ [root@localhost libevent-2.0.20-stable]# ./configure --prefix=/usr/local/src/libevent [root@localhost libevent-2.0.20-stable]# make & make install #查看 [root@localhost ~]# rpm -qa libevent libevent-2.0.21-4.el7.x86_64
-
安装memcached
[root@localhost ~]# wget http://memcached.org/files/memcached-1.5.13.tar.gz [root@localhost ~]# tar xzf memcached-1.5.13.tar.gz -C /usr/local/src/ [root@localhost ~]# cd /usr/local/src/memcached-1.5.13/ [root@localhost memcached-1.5.13]# ./configure --enable-sasl --prefix=/usr/local/src/memcached --with-libevent=/usr/local/src/libevent/ [root@localhost memcached-1.5.13]# make & make install [root@localhost memcached-1.5.13]#
-
启动memcached
[root@localhost ~]# /usr/local/src/memcache/bin/memcached -m 128 -n 20 -f 1.25 -vv -u nobody -d
参数说明:
-d 选项是作为守护进程在后台运行
-m 是分配给Memcache使用的内存数量,单位是MB
-u 是运行Memcache的用户
-l 是监听的服务器IP地址,如果有多个地址的话
-p 是设置Memcache监听的端口
-c 选项是最大运行的并发连接数,默认是1024,可以按照你服务器的负载量来设定
-P 是设置保存Memcache的pid文件
-vv 是以very vrebose模式启动,将调试信息和错误输出到控制台
[root@localhost ~]# netstat -unlpt | grep 11211
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 15691/memcached
tcp6 0 0 :::11211 :::* LISTEN 15691/memcached
关闭memcached的命令为:
[root@localhost ~]# killall memcached
2. 修改nginx的配置文件,使nginx与php建立连接
#修改
location / {
#root html;
#index index.html index.htm;
root /web/htdocs;
index index.php index.html;
}
#将#去掉
location ~ \.php$ {
index index.php index.html;
root /web/htdocs;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
3. 安装memcache的php扩展
-
首先安装memcached的php专用客户端memcache。
[root@localhost ~]# wget http://pecl.php.net/get/memcache-2.2.7.tgz [root@localhost ~]# tar xzf memcache-2.2.7.tgz -C /usr/local/src/ [root@localhost ~]# cd /usr/local/src/memcache-2.2.7/ [root@localhost memcache-2.2.7]# /usr/bin/phpize [root@localhost memcache-2.2.7]# ./configure --enable-memcache --with-php-config=/usr/bin/php-config [root@localhost memcache-2.2.7]# make & make install
-
修改php.ini文件
添加如下一行代码来载入memcache扩展:
#查看目录下是否有memcache.so,有则继续操纵 [root@localhost memcache-2.2.7]# ls /usr/lib64/php/modules/ curl.so fileinfo.so json.so memcache.so phar.so zip.so [root@localhost memcache-2.2.7]# vim /etc/php.d/memcache.ini extension=/usr/lib64/php/modules/memcache.so
-
测试memcache的php扩展是否安装成功
运行下面的php代码,如果输出“hello world”,就表示环境搭建成功
[root@localhost ~]# vim /web/htdocs/test.php <?php $mem = new Memcache $mem->connect("127.0.0.1", 11211); $mem->set('test','hello world',0,12); $val = $mem->get('test'); echo $val; ?>
[root@localhost ~]# /usr/bin/php test.php hello world