/**

* 缓存驱动

* @author Devil

* @version 1.0.0

*/

class CacheLibrary

{

private $c_obj;

private $c_time;

/**

* [__construct 构造方法]

*/

public function __construct($host, $port = 11211)

{

/* 实例化memcached */

$this->c_obj = new Memcached();

if(!$this->c_obj->addServer($host, $port)) Api_Return(L('code_413'), 413);

/* 基础参数设置 */

$this->c_time = empty(C('cache')['time']) ? 0 : C('cache')['time'];

}

/**

* [GetTime 获取缓存时间]

* @return [int] [缓存时间]

*/

private function GetTime($time = 0)

{

return (intval($time) > 0) ? intval($time) : $this->c_time;

}

/**

* [Add 缓存添加]

* @param [string] $key [索引]

* @param [mixed] $val [值]

* @param [integer] $time [过期时间(单位秒), 0永久, 或时间戳]

* @return [boolean] [成功true, 失败false]

*/

public function Add($key, $val, $time = 0)

{

return $this->c_obj->add($key, $val, $this->GetTime($time));

}

/**

* [Set 缓存替换]

* @param [string] $key [索引]

* @param [mixed] $val [值]

* @param [integer] $time [过期时间(单位秒), 0永久, 或时间戳]

* @return [boolean] [成功true, 失败false]

*/

public function Set($key, $val, $time = 0)

{

return $this->c_obj->set($key, $val, $this->GetTime($time));

}

/**

* [SetMulti 设置多个索引的缓存数据]

* @param [type] $key_all [索引数组]

* @param [integer] $time [过期时间(单位秒), 0永久, 或时间戳]

* @return [boolean] [成功true, 失败false]

*/

public function SetMulti($key_all, $time = 0)

{

return $this->c_obj->setMulti($key_all, $time);

}

/**

* [Append 向已存在索引后面追加数据]

* @param [string] $key [索引]

* @param [string] $val [追加的数据(字符串)]

*/

public function Append($key, $val)

{

$this->setOption();

return $this->c_obj->append($key, $val);

}

/**

* [Prepend 向已存在索引前面追加数据]

* @param [string] $key [索引]

* @param [string] $val [追加的数据(字符串)]

*/

public function Prepend($key, $val)

{

$this->setOption();

return $this->c_obj->prepend($key, $val);

}

/**

* [Replace 替换已存在索引下的元素]

* @param [string] $key [索引]

* @param [mixed] $val [值]

* @param [integer] $time [过期时间(单位秒), 0永久, 或时间戳]

* @return [boolean] [成功true, 失败false]

*/

public function Replace($key, $val, $time = 0)

{

$this->c_obj->replace($key, $val, $time);

}

/**

* [setOption 设置选项]

*/

private function setOption()

{

$this->c_obj->setOption(Memcached::OPT_COMPRESSION, false);

}

/**

* [Fetch 抓取下一个结果]

* @param [string] $key_all [索引名]

* @param [boolean] $cas [是否返回长度, 是true, 否false默认]

*/

public function Fetch($key_all, $cas = false)

{

$this->GetDelayed($key_all, $cas);

return $this->c_obj->fetch();

}

/**

* [FetchAll 抓取所有剩余的结果]

* @param [string] $key_all [索引名]

* @param [boolean] $cas [是否返回长度, 是true, 否false默认]

*/

public function FetchAll($key_all, $cas = false)

{

$this->GetDelayed($key_all, $cas);

return $this->c_obj->fetchAll();

}

/**

* [GetDelayed 请求多个索引]

* @param [string] $key_all [索引名]

* @param [boolean] $cas [是否返回长度, 是true, 否false默认]

*/

private function GetDelayed($key_all, $cas)

{

$this->c_obj->getDelayed($key_all, $cas);

}

/**

* [Get 缓存获取]

* @param [string] $key [索引]

* @return [mixed] [当前索引对应的数据]

*/

public function Get($key)

{

return $this->c_obj->get($key);

}

/**

* [GetMulti 获取多个索引的缓存数据]

* @param [type] $key_all [索引数组]

*/

public function GetMulti($key_all)

{

return $this->c_obj->getMulti($key_all);

}

/**

* [Delete 删除一个索引]

* @param [string] $key [索引]

* @param [integer] $time [等待时间(单位秒), 0立即, 或时间戳]

* @return [boolean] [成功true, 失败false]

*/

public function Delete($key, $time = 0)

{

return $this->c_obj->delete($key, $time);

}

/**

* [DeleteMulti 删除多个索引]

* @param [array] $key_all [索引数组]

* @param [integer] $time [过期时间(单位秒), 0立即, 或时间戳]

* @return [boolean或array] [成功true, 失败false]

*/

public function DeleteMulti($key_all, $time = 0)

{

$s = $this->c_obj->deleteMulti($key_all, $time);

if(empty($s)) return false;

foreach($s as $key=>$val)

{

if($val !== true) if($this->Get($key) == false) $s[$key] = true;

}

return $s;

}

/**

* [Flush 作废所有元素]

* @param [integer] $time [等待时间(单位秒), 0立即]

* @return [boolean] [成功true, 失败false]

*/

public function Flush($time = 0)

{

return $this->c_obj->flush($time);

}

}

?>

php memcached get,PHP Memcached操作类相关推荐

  1. php memcached close,PHP连接Memcached安装及数据库操作

    memcached介绍 Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有的数据都存储在内存中,因为在内存中会统一维护一张巨大的Hash表,所以支持任意存储类型的数据.很多网站通过使 ...

  2. ECShop的数据操作类文件

    ECShopv2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小.另外,当网站需 ...

  3. memcached+magent实现memcached集群

    首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源:无法同步数据,容易造成单点故障.(memagent代 ...

  4. [转]memcached+magent实现memcached集群

    From : http://www.cnblogs.com/happyday56/p/3461113.html 首先说明下memcached存在如下问题 本身没有内置分布式功能,无法实现使用多台Mem ...

  5. memcached php mysql_PHP: memcached

    客户端下载 系统要求及环境配置注意:您已经有 php memcache 等环境,请注意教程中的一些提示,以免生产环境被覆盖,导致业务不可用,在升级及再编译环境前请做好环境备份. windows 系列版 ...

  6. java memcached incr_Redis与Memcached的incr/decr差异对比

    目前广泛使用的分布式缓存Redis和Memcached均支持对整数型Value值的增减,对应到具体命令中就是incr和decr命令. incr/decr是原子性操作(memcached 1.2.4及以 ...

  7. memcached 注册服务器,Memcached深入剖析(一)—Memcached服务器安装

    Memcached是一个高性能的分布式内存缓存服务器. 一般的使用目的是:通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度. 提高可扩展性. 许多Web应用都将数据保存到DB中, ...

  8. Java学习总结:41(文件操作类:File)

    Java文件操作类:File 在java.io包中,如果要进行文件自身的操作(例如:创建.删除等),只能依靠java.io.File类完成. File类的常用操作方法 No. 方法 类型 描述 1 p ...

  9. Java学习总结:35(数字操作类)

    Java的数字操作类 一.Math类 Math类是一个专门用来进行数学计算的操作类,它提供了一系列的数学计算方法.在Math类里面提供的一切方法都是static型方法,所以可以直接由类名称进行调用. ...

最新文章

  1. NGUI的技能冷却实现
  2. 2018.12.24
  3. SharePoint 2013 新建网站集图解
  4. 【深度学习入门到精通系列】nnU-Net论文解析
  5. 百度地图手绘线坐标获取
  6. Connected to an idle instance问题的小小仇恨
  7. ChemDraw教程:如何查看和删除俗名
  8. 读书笔记8-浪潮之巅(part3)
  9. 结构化编程:不确定迭代循环控制do while
  10. [linux 命令笔记] kill
  11. 上海市消保委:春节长假期间 共受理消费者投诉4600件
  12. 微信退款参数格式错误
  13. 网传各高校教授经典语录
  14. css3动画结束捕捉事件整理
  15. java基础菜鸟教程_java基础菜鸟教程大全,java入门
  16. 百度云库计算机网页制作说课PPT,网页制作说课PPT.doc
  17. html怎么显示五线谱,教你一个怎么看五线谱的绝招!
  18. JSP完成添加商品时的图片上传
  19. 朱啸虎是如何投到国内第一家 PLG 独角兽的 | 风云投资人
  20. 什么是强化学习?(主要的强化学习概念)

热门文章

  1. 部署nginx反向代理及缓存
  2. There are no packages available for install
  3. 淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站
  4. oracle decode函数
  5. intellij 常用设置
  6. 加载MNIST报错:[WinError 10060] 由于连接方在一段时间后没有正确答复解决办法(亲测)
  7. 查看mysql主从配置的状态及修正 slave不启动问题
  8. VMware通过vmdk文件创建虚拟机
  9. -bash: /tyrone/jdk/jdk1.8.0_91/bin/java: cannot execute binary file
  10. NGINX限流的一些思考