内存缓存之memcache的使用

介绍:memcache是一种缓存技术,它可以把你的数据放入内存,从而通过内存访问,因为内存读取速度很快,所以memcached技术的主要目的就是提速。

   在memcached中维护了一张大的hashtable表,该表是在内存,标的结构式key=>value

   memcached中可以保存的数据类型(字串,数值,数组,对象,布尔值,二进制数据,null)

安装:cmd进入到memcached.exe所在的文件夹

   memcached.exe -d install 安装memcached

   memcached.exe -d start 启动memcached服务

     memcached.exe -p 11212 在指定的端口上启动memcached服务,此时不要关闭控制台

   memcached默认的端口是11211

   memcached.exe -d stop|shutdown 关闭正在运行的memcached服务

   memcached.exe -d uninstall 拆卸安装的memcached服务

   memcached.exe -d restart 重新启动memcached服务

   memcached.exe -c 1000 同时最大连接数,默认是1024

   memcached.exe -m 最大内存使用,单位是mb,默认是64mb,最大是2gb

   memcached.exe -h 显示帮助

   memcached.exe -f块大小增长因子,默认是1.25

使用telnet对memcached进行crud操作

   打开到memcached的链接 telnet 127.0.0.1 11211

    get 读取一个值 get name

    set 设置一个值,如果键名存在,则更新这个键值 set name 0 60 5

    add 添加一个键值对  add name 0 60 5

    replace 替换一个键名的值 replace name 0 60 5

    append 给一个存在的键添加数据 append name 0 60 5

    preappend 在一个键值的前面添加数据 preappend name 0 60 5

    delete 删除一个键值对 delete name

    flush_all 清除所有的数据

    stats 列举出memcached的使用情况

使用php对memcached进行crud操作

   首先安装php的memcached扩展  php_memcached.dll(注意与使用的php的版本要相同)

   

    

<?php
    
    //创建一个memcache实例
    $mem=new Memcache();
    
    //建立连接
    if(!$mem->connect("127.0.0.1",11211)){
        die("连接失败");
    }
    //增加一个字符串
    if($mem->set('name','keyboard',MEMCACHE_COMPRESSED,60)){
        echo "添加成功";
    }
    //添加数值
    if($mem->set('num1',100,MEMCACHE_COMPRESSED,60)){
        echo "添加成功";
    }
    //添加数组
    $arr=array("beijing","shanghai");
    if($mem->set('arr1',$arr,MEMCACHE_COMPRESSED,60)){
        echo "添加成功";
    }
    //添加对象
    class Page{
        public $number;
        public $list;
        public $total;
        public function __construct($num,$li,$to){
            $this->number=$num;
            $this->list=$li;
            $this->to=$to;
        }
    }
    $page=new Page(100,10,5000);
    if($mem->set('obj1',$page,MEMCACHE_COMPRESSED,60)){
        echo "添加成功";
    }
    //读取
    $num=$mem->get('num1');
    //更新
    $num=$mem->replace('num1',10000,MEMCACHE_COMPRESSED,60);
    //删除
    $mem->delete('num1');
?>

    

 使用php实现memcache的分布式缓存

 假设我的电脑上有两个memcache

将数据写入到memcache中,write.php

<?php
        $mem=new Memcache();
        
        $mem->addServer("127.0.0.1",11211);
        $mem->addServer("127.0.0.1",99999);

        for($i=0;$i<100;$i++)
        {
            $mem->set("val".$i,$i,MEMCACHE_COMPRESSED,100);
        }
?>

将数据从memcache中读出,read.php

<?php
        $mem=new Memcache();
        
        $mem->addServer("127.0.0.1",11211);
        $mem->addServer("127.0.0.1",99999);

        for($i=0;$i<100;$i++)
        {
            $mem->set("val".$i,$i,MEMCACHE_COMPRESSED,100);
        }
?>

将session数据保存到memcache中

保证memcache扩展开启,memcachd运行
设置php.ini中session.save_handler=memcache
设置php.ini中session.save_path=tcp://localhost:11211
也可以通过php函数 ini_set() 函数在页面设置.
 

 

 

    

posted @ 2013-01-24 15:23  田小样  阅读(269)  评论(0)    收藏  举报