Home > Backend Development > PHP Tutorial > Basic method of operating memcache cache in php

Basic method of operating memcache cache in php

高洛峰
Release: 2016-11-29 10:31:33
Original
1386 people have browsed it

<?php
/**
 * Memcache<a href="http://www.php1.cn/category/79.html">缓存</a>操作
 * @update http://www.lai18.com
 */
class MCache extends Object implements CacheFace
{
  private $mem = null; //Mem对象
     
  private $sId = 1;  //servier服务ID
     
  /**
   * 初始化Memcache
   *
   * @return Object
   */
  public function __construct()
  {
    if ( !class_exists(&#39;Memcache&#39;) )
    {
      throw new QException(&#39;PHP extension does not exist: Memcache&#39;);
    }
    $this->mem = new Memcache();
  }
     
  /**
   * 链接memcahce服务
   *
   * @access private
   * @param  string $key 关键字
   * @param  string $value <a href="http://www.php1.cn/category/79.html">缓存</a>内容
   * @return array
   * @update http://www.lai18.com
   */
  private function connect( $sid )
  {
    $file = $this->CacheFile();
    require $file;
    if(! isset($cache) )
    {
      throw new QException(&#39;<a href="http://www.php1.cn/category/79.html">缓存</a>配置文件不存在&#39;.$file);
    }
    $server = $cache[$this->cacheId];
    $sid  = isset($sid) == 0 ? $this->sId : $sid;//memcache服务选择
    if ( ! $server[$sid])
    {
      throw new QException(&#39;当前操作的<a href="http://www.php1.cn/category/79.html">缓存</a>服务器配置文件不存在&#39;);
    }
    $host = $server[$sid][&#39;host&#39;];
    $port = $server[$sid][&#39;port&#39;];
    try {
      $this->mem->connect( $host , $port );
    } catch (Exception $e) {
      exit(&#39;memecache连接失败,错误信息:&#39;. $e->getMessage());
    }
  }
     
  /**
   * 写入<a href="http://www.php1.cn/category/79.html">缓存</a>
   *
   * @access private
   * @param  string $key 关键字
   * @param  string $value <a href="http://www.php1.cn/category/79.html">缓存</a>内容
   * @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);
    }
  }
     
  /**
   * 读取<a href="http://www.php1.cn/category/79.html">缓存</a>
   *
   * @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();
  }
  /**
   * 删除<a href="http://www.php1.cn/category/79.html">缓存</a>
   *
   * @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();
    }*/
  }
}
Copy after login


Related labels:
php
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template