zoukankan      html  css  js  c++  java
  • 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扩展。

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

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

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

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

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

    4.

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

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

    6.杀php进程,并重启

    7.在浏览器输入,test.php是自带的,里面有个函数,可以打php的相关信息,我们从这里可以看到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;

    }

    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,如果没取到,说没取到。

    在地址栏输入192.168.1.200/user13.html

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

  • 相关阅读:
    python画图axis和axes以及subplot的区别
    LSTM block和cell区别
    go语言之用户输入&类型别名&类型转换
    Go 语言运算符
    go语言的常量
    go语言之数据类型和格式化输出
    go语言之变量
    requests+django+bs4实现一个web微信的功能
    python读取es中的所有数据并计算md5然后进行持久化
    python的os模块fnmatch模块介绍
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5844824.html
Copyright © 2011-2022 走看看