zoukankan      html  css  js  c++  java
  • 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();
            }*/
        }
    }
  • 相关阅读:
    手把手教你在CSDN博客中插入图片之剑走偏锋系列
    PCD文件格式详解及在PCL下读取PCD文件
    C 基于数组存储的堆栈实现
    C++ Opencv remap()重映射函数详解及使用示例
    C 线性表的链式存储实现及插入、删除等操作示例
    C 线性表的顺序存储实现及插入、删除等操作示例
    C 单向链表就地逆转
    C 单向链表的创建、插入及删除
    [C#]SQL Server Express LocalDb(SqlLocalDb)的一些体会
    [C#]关于DataDirectory的一些思考
  • 原文地址:https://www.cnblogs.com/pingliangren/p/5587583.html
Copyright © 2011-2022 走看看