php memcache 基础操作

<?php
/**
  * Memcache缓存操作
  * @author hxm
  * @version 1.0
  * @since 2015.05.04
  */
class MCache extends Object implements CacheFace
{
     private $mem = null; //Mem对象
     
     private $sId = 1;    //servier服务ID
     
     /**
      * 初始化Memcache
      *
      * @return  Object
      */
     public function __construct()
     {
         if ( ! class_exists ( 'Memcache' ) )
         {
             throw new QException( 'PHP extension does not exist: Memcache' );
         }
         $this ->mem = new Memcache();
     }
     
     /**
      * 链接memcahce服务
      *
      * @access  private
      * @param   string  $key  关键字
      * @param   string  $value  缓存内容
      * @return  array
      */
     private function connect( $sid )
     {
         $file = $this ->CacheFile();
         require $file ;
         if (! isset( $cache ) )
         {
             throw new QException( '缓存配置文件不存在' . $file );
         }
         $server = $cache [ $this ->cacheId];
         $sid    = isset( $sid ) == 0 ? $this ->sId : $sid ; //memcache服务选择
         if ( ! $server [ $sid ])
         {
             throw new QException( '当前操作的缓存服务器配置文件不存在' );
         }
         $host = $server [ $sid ][ 'host' ];
         $port = $server [ $sid ][ 'port' ];
         try {
             $this ->mem->connect( $host , $port );
         } catch (Exception $e ) {
             exit ( 'memecache连接失败,错误信息:' . $e ->getMessage());
         }
     }
     
     /**
      * 写入缓存
      *
      * @access  private
      * @param   string  $key  关键字
      * @param   string  $value  缓存内容
      * @return  array
      */
     public function set( $key , $value , $sid , $expire = 0)
     {
         $data = $this ->get( $key , $sid ); //如果已经存在key值
         if ( $data )
         {
             return $this ->mem->set( $key , $value ,MEMCACHE_COMPRESSED  , $expire );
         } else {
             return $this ->mem->add( $key , $value ,MEMCACHE_COMPRESSED  , $expire );
         }
     }
     
     /**
      * 读取缓存
      *
      * @access  private
      * @param   string  $key  关键字
      * @param   int     $sid  选择第几台memcache服务器
      * @return  array
      */
     public function get( $key , $sid )
     {
         $this ->connect( $sid );
         return $this ->mem->get( $key );
     }
     
     /**
      *  清洗(删除)已经存储的所有的元素
      *
      * @access  private
      * @return  array
      */
     public function flush ()
     {
         $this ->connect();
         return $this ->mem-> flush ();
     }
     /**
      * 删除缓存
      *
      * @access  private
      * @param   string  $key  关键字
      * @param   int     $sid  选择第几台memcache服务器
      * @return  array
      */
     public function remove( $key , $sid )
     {
         $this ->connect();
         return $this ->mem-> delete ( $key );
     }
     
     /**
      * 析构函数
      * 最后关闭memcache
      */
     public function __destruct()
     {
         /*if(! $this->mem)
         {
             $this->mem->close();
         }*/
     }
}

转载于:https://www.cnblogs.com/pingliangren/p/5587583.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值