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();
        }*/
    }
}

时间: 2024-10-06 10:40:25

php memcache 基础操作的相关文章

Memcache基础教程

Memcache是什么Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力.它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable.Memcache官方网站:http://www.danga.com/memcached,更多详细的信息可以来这里了解 :) 为什么会有Memcac

MySQL 之基础操作及增删改查等

一:MySQL基础操作 使用方法: 方式一: 通过图型界面工具,如 Navicat,DBeaver等 方式二: 通过在命令行敲命令来操作 SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个部分:DDL(定义).DML(操作).DQL(查询).DCL(控制) 1.DDL语句 数据库定义语言: 数据库.表.视图.索引.存储过程,例如CREATE DROP ALTER 2.DCL语句 数据库控制语言: 例如控制用户的访问权限GRANT.REVOKE 3

Redis数据库基础操作

MySQL和Redis的区别 """ redis: 内存数据库(读写快,IO操作少).非关系型(操作数据方便) mysql: 硬盘数据库(数据持久化,IO操作多).关系型(操作数据间关系) 大量访问的临时数据,才有redis数据库更优 """ redis和memcache的区别 """ redis: 操作字符串.列表.字典.无序集合.有序集合 | 支持数据持久化(数据丢失可以找回.可以将数据同步给mysql) | 高

vsphere基础操作-网络

一.vsphere网络操作 概念: portgroup:通信端口组.在vsphere中,一共包含三种端口组. 1)管理网络:management network,可以理解为EXSI主机的管理IP地址.每个EXSI必须配置一个管理网络IP,使得vc能够管理到exsi.每个EXSI只能有一个唯一的管理网络. 2)内核:vmkernel,可以理解为EXSI的后端IP,使得后端各项功能能够实现.这里所说的后端功能指的是EXSI之间的通讯以实现VMOTION等高级功能.连入ISCSI或NAS等存储.FT功

Mysql安装和基础操作

1.环境检查: 先检查是否已经安装了:rpm -qa |grep mysql ---两个都检查下,查看mysql是否安装 rpm -qa |grep MySQL若安装有可删除:rpm -e ****** 2.安装:1)安装前准备:mkdir usr/mysql cd进入该目录,上传安装包到/usr/mysql目录下2)安装:rpm -ivh MySQL-server-5.0.16-0.i386.rpm rpm -ivh MySQL-elient-5.0.16-0.i386.rpm3)验证安装是否

双向链表的基础操作(C++实现)

★C++实现双向链表的基础操作(类的实现) #include<iostream> #include<cassert> using namespace std; typedef int DataType; class double_link_list {                        //定义双向链表类,包括了双向的前驱和后继指针,以及对象的初始化 public: friend class ListNode; double_link_list(DataType x =

数据结构-线性表的一些基础操作 c++代码

//线性表的顺序存储结构 template <class T> class Linearlist { public: Linearlist(int MaxListSize == 10); ~Linearlist() { delete []element; } bool IsEmpty() const { return length == 0; } bool IsFull() const { return length == MaxSize; } int Length() const { ret

php之文件基础操作

在php中对文件的基础操作非常的简单,php提供的函数粗略的用了一遍. file_get_contents():可以获取文件的内容获取一个网络资源的内容,这是php给我封装的一个比较快捷的读取文件的内容.网络资源的函数,此函数里面封装了对文件的打开,读取,关闭操作.一次性的将内容全部读取到内存中,相当方便,但是对于大文件或者网络资源较大的时候,不建议使用.file_put_contents():写入数据,和file_get_contents()类似. 文件的基础操作:touch()--新建,fo

环境变量,属性文件,文件基础操作,目录基础操作,遍历指定后缀名文件

环境变量和属性 环境变量相关: 1.得到某个/所有环境变量的值 2.设置环境变量的值 3.列出全部系统属性名 import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; import java.util.Properties; public class Environment { public static void main(String[] args) { // TODO Auto-gener