1.memcached的概念
memcached 是一个高性能的分布式内存对象缓存系统,用于动态web应用以减轻数据库负载,通过对内存中缓存数据和对象来减少读取数据库的次数,
执行读取操作的顺序是从web层获取请求并检查之前在缓存中存储的查询结果,如果找到则直接返回,若找不到,则执行查询并将结果存储在缓存中,然后把结果返回给web层。
将数据写入到数据库时,首先需要执行数据库的写入操作,然后将之前缓存的任何受此写入操作影响的结果设定为无效,此过程防止缓存和数据库之间出现数据的不一致性。
2.安装:
memcache安装分为服务器端的安装和客户端的安装,所谓服务器端的安装就是在服务器上安装memcache实现数据的存储;所谓客户端的安装指php等程序去使用memcache提供的函数,需要php添加扩展。
libevent是安装memcached的前提条件是memcached所依赖的异步事件通知库
[root@zhu1 ~]# wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz [root@zhu1 ~]# wget https://memcached.googlecode.com/files/memcached-1.4.14.tar.gz tar zxvf libevent-2.0.21-stable.tar.gz cd libevent-2.0.21-stable ./configure --prefix=/usr make && make install tar zxvf memcached-1.4.4.tar.gz cd memcached-1.4.4 ./configure --with-libevent=/usr make && make install
3.启动
[root@zhu1 ~]# memcached -d -m 2048 -l 192.168.70.134 -p 11211 -u root
启动参数:
-d:启动一个守护进程
-m :分配给memcached使用的内存大小,单位是MB
-u :指定运行memcached的用户,这里是root
-l:监听服务器的ip地址,
-p:设置memcached的监听端口,最好大于1024
-c:最大运行的并发连接数,默认为1024
-P:设置保存memcached的pid文件。
4.安装memcache的php扩展。
在http://pecl.php.net/package/memcache这里下载想要的memcache版本
[root@zhu1 ~]# wget http://pecl.php.net/get/memcache-2.2.1.tgz [root@zhu1 ~]# tar zxvf memcache-2.2.1.tgz [root@zhu1 ~]# cd memcache-2.2.1 [root@zhu1 ~]# /opt/php/bin/phpize [root@zhu1 ~]# ./configure --enable-memcache --with-php-config=/opt/php/bin/php-config [root@zhu1 ~]# make && make install
在php的配置文件php.ini中extension_dir="./"修改为
extension_dir="/opt/php/lib/php/extensions/no-debug-non-zts-20060613/"
添加下面这行来载入memcache扩展
extension=memcache.so
5.测试memcache的扩展是否配置成功
[root@zhu1 ~]# vim /var/www/jiang/memcache.php <?php $mem = new Memcache; $mem->connect('192.168.70.134',11211); $mem->set('test','hello world',0,12); $val = $mem->get('test'); echo $val; ?> ~
至此配置完成。
6.在nginx中配置,使用memcache模块,
location / { set $memcached_key $uri; memcached_pass name:11211; default_type text/html; error_page 404 = /fallback; } location = /fallback { proxy_pass backend; } }
memcached_pass [name:port]
默认值为none,该指令用于设置memcached服务器的地址和端口
memcached_connect_timeout :该指令用于设置连接memcached服务器的超时时间,单位为毫秒,默认为60000
memcached_read_timeout :该指令用于设置从memcached服务器读取数据的超时时间,单位为毫秒,默认60000
memcached_buffer_size:设置接收发送数据缓冲区的大小