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;
?>
~

Nginx 之memcached_数据库

至此配置完成。

 

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:设置接收发送数据缓冲区的大小