memcache之旅(二)

来源:互联网 发布:世界ol装备进阶数据 编辑:程序博客网 时间:2024/06/15 22:56

memcache在各种语言中的使用都是很简单的,例如在php中就有memcache和memcached两个封装类,在java中也有封装好的MemCachedClient类,还有更多的方法操作memcache。最近在做php的项目,所以暂时就写下php中的memcache吧。


首先,我们自己封装一个mc类,以备后续需求:

class mc {
    private $m;
    private $host;
    private $port;
    private $expire;


    public function __construct() {
        $this->host = MEMCACHED_HOST;
        $this->port = MEMCACHED_PORT;
        $this->expire = MEMCACHED_EXPIRE;
        $this->m = new Memcache();
        $r = $this->m->connect($this->host, $this->port);
    }
    
    public function __destruct() {
            $this->m->close();
    }
    
    public function get($key) {
        return $this->m->get($key);
    }
    
    public function set ($key , $val , $expire = 0) {
        if($expire > 0){
            $this->m->set($key,$val,0,$expire);
        }else
            $this->m->set($key,$val,0,$this->expire);
    }
 
    public function del ($key) {
        $this->m->delete($key,0);
    }
  
    public function append($key, $value){
        $this->m->append($key,$value);
    }
}

if (!class_exists("Memcache")) {
    class Memcache {
        public function connect ($host,$port) {
            return false;
        }
        public function set ($key,$val,$t,$expire) {
            
        }
        public function get ($key) {
            return false;
        }
        
        public function close () {
            
        }
    }
}

这里说两点:1,$this->m->delete($key,0)如果没有这个0,可能会失败;2,之前在未安装memcache扩展情况下就调用了这个类,致使出错,所以有了if (!class_exists("Memcache")) {···}这段代码。

有了这个类,当memcache服务器开启时,就可以直接将一些数据缓存到memcache中(set方法),读的时候也可以优先从memcache中读取(get方法)。

总的来说,memcache的是用是很方便的,单次操作时间能提升十倍以上,用apache的ab测试工具并发数也有很大提升。

再说一下centOS中memcache扩展的安装。

先下载文件:wget-chttp://pecl.php.net/get/memcache-3.0.8.tgz

解压:tar-zxvf memcache-3.0.8.tgz

cd到解压目录:cd memcache-3.0.8

执行phpize:/usr/local/php/bin/phpize

执行:./configure--with-php-config=/usr/local/php/bin/php-config--enable-memcache--with-zlib-dir

安装:make && make install

这样,如果安装成功的话会给出so文件的路径,cd到此路径中就可以看到so文件,再讲这个文件添加到php.ini文件中,即添加一行extension= /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/memcache.so,最后重启php即可在phpinfo中看到memcache扩展!



0 0
原创粉丝点击