php操作Memcached -- Memcache 扩展

1.安装并配置Memcache扩展库
在php.ini文件添加:
;这里启用memcache.dll扩展
extension=php_memcache.dll   (注:使用php操作memcache 也必须先安装并启动 memcached Server
并把对应的dll文件拷贝到 php/ext目录下
php_memcache.dll 下载地址 :http://downloads.php.net/pierre/
2.使用php对Memcached进行CRUD操作 [配合php帮助手册]
 
如果没有权限加载memcache扩展
可以使用 memcached-client.php 客户端(http://www.nioxiao.com/wp-content/uploads/2006/04/memcached-client.zip)
 
参考 http://5ydycm.blog.51cto.com/115934/185116
===============================================================================
结论: //string, int,float, boolean  array object null resource 中除了 resource 不能存放,其它都可以.
编程测试

代码(测试放入php的各种数据类型)

<?php

        //1.实例化一个Memcache对象
        $mem=new Memcache;

        //2. 连接到指定的memcache中
        $mem->connect("127.0.0.1",11211);
        //0表示不压缩数据,如果使用压缩MEMCACHE_COMPRESSED
        if(!$mem->add("name","shunping",0,30)){
             //也可以用 telnet 查看有没有加入
            echo "之前已经放入了,现在放入不成功";
        }else{
            echo "ok!";
        }

        //可以放入数值
        if(!$mem->add("age",100,0,30)){
            echo "age有哥们放入了";
        }else{
            echo "ok!";
        }

        //可以放入boolean

        if(!$mem->set("ok",true,0,30)){
            echo "ok有哥们放入了";
        }else{
            echo "ok!";
        }

        //放入数组

        $arr1=array("aa"=>"北京","bb"=>"天津");
        
        //对数组进行序列化,在网络传输的时候,为了保证,数据类型的不丢失,
        //先序列化,再发生.
        //$arr1=serialize($arr1);

        $arr2=json_encode($arr1);
        print_r($arr2);
        

        $mem->add("arr",$arr1,MEMCACHE_COMPRESSED,100);

        //对象

        require "Person.class.php";

        $person=new Person(10,"xiaoming");

        $mem->add("per1",$person,MEMCACHE_COMPRESSED,100);


        //取出
        $per2=$mem->get("per1");

        var_dump($per2);
        echo "对象名字=".$per2->name;

        //string, int,float, boolean  array object null resource
        

        //不能把resource 类型放入到memcache
        $con=mysql_connect("localhost","root","root");

        echo "<br/>";
        var_dump($con);

        $mem->add("mylink",$con);

        

?>    

 

用于获取各种数据

<?php

    //获取
    $mem=new Memcache;
    $mem->connect("localhost",11211);
    if($val=$mem->get("name")){
        echo "val=$val";
    }else{
        echo "没有这个值";
    }


    /*获取数值*/
    if($val=$mem->get("age")){
        echo "age=$val";
    }else{
        echo "没有这个值";
    }
    /*布尔值*/
    echo "<br/>";
    $val=$mem->get("ok");
    
    echo "ok=$val";

    echo "<br/>";

    $arr1=$mem->get("arr");

    echo "<pre>";
    var_dump($arr1);
    echo "</pre>";

    echo "<br/>对象的值..";
        require "Person.class.php";
    //取出
        $per2=$mem->get("per1");
        var_dump($per2);
        echo "对象名字=".$per2->name;
    echo "<br/>连接";
    var_dump(    $mem->get("mylink"));
?>

 

使用多个memcached 缓存服务器.,可以自动实现负载均衡(分布式设计)

<?php

    $mem=new Memcache();

    //如果我们网站,需要多个memached缓存系统.
    //$mem->connect("localhost",11211); (立即向localhost的11211端口发出连接)
    $mem->addServer("192.168.1.100",11211);//256 ->10m
    $mem->addServer("192.168.1.200",11211);
    $mem->addServer("192.168.1.222",11211);
    .
    $mem->add("name","zs",0,100);  //加入数据,加入到哪一个memcache系统是自动使用负载均衡算法存放的,我们无法决定放入那个memcache系统

?>

 

posted @ 2013-01-05 11:59  梦话四叶  阅读(148)  评论(0编辑  收藏  举报