php memcached操作类

1、简易版:

使用:

<?php
header('Content-Type:application/json; charset=utf-8');
header('Access-Control-Allow-Origin:*');

if (!defined('MEMCACHE_HOST')) {
	define('MEMCACHE_HOST', '***5');
	define('MEMCACHE_PORT', **);
}
include_once('memcache.php');

M:Set();
M:Get();
M:Del();

操作类

<?php
/*
*简单版
*/
class M
{
    static private $memc;
    static private $connected;


    static function _init()
    {/*
		$options["servers"] = array("*****");
		$options["debug"] = false;
		$options['compress'] = false;
		*/
        if (defined("MEMCACHE_HOST"))
            $host = MEMCACHE_HOST;
        else
            $host = "****";

        if (defined("MEMCACHE_PORT"))
            $port = MEMCACHE_PORT;
        else
            $port = 11200;

        self::$memc = memcache_pconnect($host, $port, 2);
        if (!self::$memc)
            //		self::$connected = true;
            self::$connected = false;
        else
            self::$connected = true;

    }

    static function Set($key, $val, $exptime = 0)
    {
        if (defined("MEMCACHE_DEFAULT_EXPTIME"))
            $exptime = MEMCACHE_DEFAULT_EXPTIME;
        if (self::$connected)
            return self::$memc->set($key, $val, 0, $exptime);
    }

    static function Get($key)
    {
        if (self::$connected)
            return self::$memc->get($key);
    }

    static function Add($key, $val)
    {
        if (self::$connected)
            return self::$memc->increment($key, $val);
    }

    static function Del($key)
    {
        if (self::$connected) {
            return self::$memc->delete($key);
        }
    }
}

M::_init();
?>

完整版:

<?php

/*  内存缓存管理  
*/

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 (emptyempty($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 (emptyempty($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());
}

?>

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值