PHP怎样操作Memcache?

分类:Memcache,PHP | 作者:凹凸曼 | 发表于2011/04/02

前段时间在写论坛接口的时候搞的一个PHP操作Memcache类,

感觉Memcache还是不错!

可以就是太吃内存了!内存容量不行的肯定不行!

等哈没有缓解服务器压力的时候,反而增加了服务器的压力!哈哈!

<?php
    /*  author:凹凸曼(lyc)
    /*  email: jar-c@163.com
    /*  内存缓存管理
    */
class Yc_Memcache{
 private $memcache=null; 

 public function __construct(){
 }
 /**
    * 连接数据库
    *
    * @param mixed $host
    * @param mixed $port
    * @param mixed $timeout
    */
 public  function connect($host,$port=11211,$timeout=1){
  if(!function_exists(memcache_connect)){ return FALSE;}
  $this->memcache=@memcache_connect($host,$port,$timeout);
  if(empty($this->memcache)){
   return FALSE;
  }else{
   return TRUE;
  }
 }
    /**
    * 存放值
    *
    * @param mixed $key
    * @param mixed $var
    * @param mixed $flag   默认为0不压缩  压缩状态填写:MEMCACHE_COMPRESSED
    * @param mixed $expire  默认缓存时间(单位秒)
    */
 public function set($key,$var,$flag=0,$expire=10){

  $f=@memcache_set($this->memcache,$key,$var,$flag,$expire);
  if(empty($f)){
   return FALSE;
  }else{
   return TRUE;
  }
 }
    /**
    * 取出对应的key的value
    *
    * @param mixed $key
    * @param mixed $flags
    * $flags 如果此值为1表示经过序列化,
    * 但未经过压缩,2表明压缩而未序列化,
    * 3表明压缩并且序列化,0表明未经过压缩和序列化
    */
 public function get($key,$flags=0){
  $val=@memcache_get($this->memcache,$key,$flags);
  return $val;
 }
 /**
    * 删除缓存的key
    *
    * @param mixed $key
    * @param mixed $timeout
    */
 public function delete($key,$timeout=1){
  $flag=@memcache_delete($this->memcache,$key,$timeout);
  return $flag;
 }
    /**
    * 刷新缓存但不释放内存空间
    *
    */
 public function flush(){
  memcache_flush($this->memcache);
 }
    /**
    * 关闭内存连接
    *
    */
 public function close(){
  memcache_close($this->memcache);
 }
    /**
    * 替换对应key的value
    *
    * @param mixed $key
    * @param mixed $var
    * @param mixed $flag
    * @param mixed $expire
    */
 public function replace($key,$var,$flag=0,$expire=1){
  $f=memcache_replace($this->memcache,$key,$var,$flag,$expire);
  return $f;
 }
    /**
    * 开启大值自动压缩
    *
    * @param mixed $threshold 单位b
    * @param mixed $min_saveings 默认值是0.2表示20%压缩率
    */
 public function setCompressThreshold($threshold,$min_saveings=0.2){
  $f=@memcache_set_compress_threshold($this->memcache,$threshold,$min_saveings);
  return $f;
 }
    /**
    * 用于获取一个服务器的在线/离线状态
    *
    * @param mixed $host
    * @param mixed $port
    */
 public function getServerStatus($host,$port=11211){
  $re=memcache_get_server_status($this->memcache,$host,$port);
  return $re;
 }
    /**
    * 缓存服务器池中所有服务器统计信息
    *
    * @param mixed $type 期望抓取的统计信息类型,可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes}
    * @param mixed $slabid  cachedump命令会完全占用服务器通常用于 比较严格的调
    * @param mixed $limit 从服务端获取的实体条数
    */
 public function getExtendedStats($type='',$slabid=0,$limit=100){
  $re=memcache_get_extended_stats($this->memcache,$type,$slabid,$limit);
  return $re;
 }
}

/***********测试区域********************/
$mem=new Yc_Memcache();

$f=$mem->connect('125.64.41.138',12000);
var_dump($f);
if($f){
// $mem->setCompressThreshold(2000,0.2);
 $mem->set('key','hello',0,30);
//        var_dump($mem->delete('key1'));
 // $mem->flush();
// var_dump($mem->replace('hao','d'));
// echo $mem->get('key');
 echo $mem->getServerStatus('127.0.0.1',12000);
 echo $mem->get('key');
 echo '<pre>';
 print_r($mem->getExtendedStats());
}

?>

本文出自 “凹凸曼” 博客,请务必保留此出处 http://www.apoyl.com/?p=429

日志信息 »

该日志于2011-04-02 01:21由 凹凸曼 发表在Memcache, PHP分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

目前盖楼 (0)层:

发表评论 »

« »