4.php整合Memcached

用法: nginx响应请求时,直接请求memcached,

如果没有相应的内容,再回调PHP页面,去查询database,并写入memcached.

 

分析: memcached是k/v存储, key-->value,

nginx请求memecached时,用什么做key?

一般用 uri arg 做key,  如 /abc.php?id=3

 

 

 

 

 

配置memcache集群

进入php配置文件,搜索一下memcached,看看是否引入了memcached,如果没有,需要安装php的memcached扩展。

4.php整合Memcached

发现没有安装,那么下面我们就需要在已经编译好php的情况下,安装memcached扩展

1. 因为我们以前编译过memcached,虽然make clean了,如果怕还是有影响,可以把memcached删除,再重新解压一下。

4.php整合Memcached

4.php整合Memcached

4.php整合Memcached

4.php整合Memcached

4.php整合Memcached

2.我们在编译memcached之前,要执行一下./configure命令,但是这里没有该命令,我们需要先执行phpize,之后就有./configure

注:http://www.jb51.net/article/37741.htm 这是一个关于phpize命令的详解

4.php整合Memcached

3.我们这里只需要配置一下php目录的选项就可以

4.php整合Memcached

4.

4.php整合Memcached

make && make install 之后,出现如下一句话,告诉你这个扩展在什么位置

4.php整合Memcached

5.进入到php配置文件,添加如下一句,来把memcached引入进来

4.php整合Memcached

6.杀php进程,并重启

4.php整合Memcached

7.在浏览器输入4.php整合Memcached,test.php是自带的,里面有个函数,可以打php的相关信息,我们从这里可以看到php的基本信息,可以看到是有memcached扩展的。

4.php整合Memcached

在nginx的配置文件中做如下修改:

location / {

    #设置memcached的key是什么

set $memcached_key “$uri”;

#设置memcached的ip和端口,让nginx好知道去哪里找memcached

memcached_pass 127.0.0.1:11211;

#如果我们在memcached中没有找到key,那么我们去调用那个php程序

error_page 404 /claaback.ph;

}

4.php整合Memcached

upstream 实现集群memcached

    upstream memserver {  把用到的memcached节点,声明在一个组里

        hash_key $request_uri;  // hash计算时的依据,以uri做依据来hash

        server localhost:11211;

        server localhost:11212;

    }

Location里

 

        location / {

           # root   html;

           set $memcached_key $uri;

           memcached_pass memserver;  // memserver为上面的memcache节点的名称

           error_page 404 /writemem.php;

           index  index.php index.html index.htm;

        }

 

 

回调程序callback.php。连接数据库,取客户端需求的值,如果取到了,set进memcached,如果没取到,说没取到。

4.php整合Memcached

4.php整合Memcached

4.php整合Memcached

在地址栏输入192.168.1.200/user13.html

4.php整合Memcached

4.php整合Memcached

4.php整合Memcached

上面的例子是使用了一台memcached,如果使用的是多台memcached,也就是memcached集群,该如何?会出现如下的问题

4.php整合Memcached

4.php整合Memcached

4.php整合Memcached