96 lines
1.9 KiB
PHP
96 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* @copyright (C)2016-2099 Hnaoyun Inc.
|
|
* @author XingMeng
|
|
* @email hnxsh@foxmail.com
|
|
* @date 2017年10月24日
|
|
* Memcache缓存类
|
|
*/
|
|
namespace core\cache;
|
|
|
|
use core\basic\Config;
|
|
|
|
class Memcache implements Builder
|
|
{
|
|
|
|
protected static $memcache;
|
|
|
|
protected $conn;
|
|
|
|
// 禁止直接实例化
|
|
private function __construct()
|
|
{}
|
|
|
|
private function __clone()
|
|
{
|
|
error('禁止克隆实例!');
|
|
}
|
|
|
|
// 单一实例获取
|
|
public static function getInstance()
|
|
{
|
|
if (! self::$memcache) {
|
|
self::$memcache = new self();
|
|
}
|
|
return self::$memcache;
|
|
}
|
|
|
|
// 初始化连接
|
|
protected function conn()
|
|
{
|
|
if (! $this->conn) {
|
|
$this->conn = new Memcache();
|
|
$server = Config::get('cache.server');
|
|
if (is_multi_array($server)) {
|
|
foreach ($server as $value) {
|
|
$this->conn->addserver($value['host'], $value['port']);
|
|
}
|
|
} else {
|
|
$this->conn->addserver($server['host'], $server['port']);
|
|
}
|
|
}
|
|
return $this->conn;
|
|
}
|
|
|
|
// 设置值
|
|
public function set($key, $value)
|
|
{
|
|
$memcache = $this->conn();
|
|
return $memcache->set($key, $value);
|
|
}
|
|
|
|
// 读取值
|
|
public function get($key)
|
|
{
|
|
$memcache = $this->conn();
|
|
return $memcache->get($key);
|
|
}
|
|
|
|
// 删除
|
|
public function delete($key)
|
|
{
|
|
$memcache = $this->conn();
|
|
return $memcache->delete($key);
|
|
}
|
|
|
|
// 清理所有
|
|
public function flush()
|
|
{
|
|
$memcache = $this->conn();
|
|
return $memcache->flush();
|
|
}
|
|
|
|
// 版本信息
|
|
public function status()
|
|
{
|
|
$memcache = $this->conn();
|
|
return $memcache->getExtendedStats();
|
|
}
|
|
|
|
// 关闭连接
|
|
public function __destruct()
|
|
{
|
|
$memcache = $this->conn();
|
|
$memcache->close();
|
|
}
|
|
} |