缓存MEMCACHE php调用(一)
在项目中,涉及大访问量时,合理的使用缓存能减轻数据库的压力,同时提升用户体验。即在非实时性的需求的前提下,一小段时间内(若干秒),用于显示的数据从缓存中获取的,而不用直接读取数据库,能有效的减少数据库的读取压力。这里记录一下php语言使用memcache的情形:
首先,我们建立一个memcachepool,可以根据不同的配置读取,生成不同的memcache实例。用到$memcache->addServer($host,$port,$flag);向连接池中添加一个memcache服务器。代码示例如下
class memcachePool{
private static $instance;
private $memcacheList = array();
private function __construct(){
}
public static function getInstance(){
if(self::$instance != null)
return self::$instance;
self::$instance = new memcachePool();
return self::$instance;
}
/**
* get memcache object from pool
* @param [type] $host 服务器
* @param [type] $port 端口
* @param [type] $flag 控制是否使用持久化连接。默认TRUE
* @return [type]
*/
public function getMemcache($host,$port,$flag){
if(isset($this->memcacheList[$host.$port]))
return $this->memcacheList[$host.$port];
$memcache = new Memcache();
// 向连接池中添加一个memcache服务器
$memcache->addServer($host,$port,$flag);
//开启大值自动压缩,第一个参数表示处理数据大小的临界点,第二个参数表示压缩的比例,默认为0.2
$memcache->setCompressThreshold(2000,0.2);
$this->memcacheList[$host.$port] = $memcache;
return $memcache;
}
}
接着实现一个包含memcache常用方法如add,set,get,flush,delete等的方法类,这里命名为dlufmemcache
class dlufMemcache{
private $memcache = null;
function __construct($host,$port){
$this->memcache = memcachepool::getInstance()->getMemcache($host,$port,true);
}
/**
* memcache set value
* @param [type] $key 键
* @param [type] $value 值
* @param integer $expire 到期的时间,如果此值设置为0表明此数据永不过期
* @param integer $flag 标志位 使用MEMCACHE_COMPRESSED指定对值进行压缩(使用zlib)
* @param [type] $serializetype
*/
public function set($key,$value,$expire=0,$flag=0,$serializetype=null){
if($serializetype == 'json' && is_array($value)){
$value = json_encode($value);
}
$this->memcache->set($key,$value,$flag,$expire);
}
/**
* 从服务端查找元素
* @param [type] $key
* @return [type]
*/
public function get($key){
return $this->memcache->get($key);
}
/**
* 增加一个条目到缓存服务器
* @param [type] $key
* @param [type] $value
* @param integer $expire
* @param integer $flag
* @param [type] $serializetype
*/
public function add($key,$value,$expire=0,$flag=0,$serializetype=null){
if($serializetype == 'json' && is_array($value)){
$value = json_encode($value);
}
$ret = $this->memcache->add($key,$value,$flag,$expire);
return $ret;
}
/**
* 清洗(删除)已经存储的所有的元素
* @return [type]
*/
public function flush(){
return $this->memcache->flush();
}
/**
* 从服务端删除一个元素
* @param [type] delete 参数:key要删除的元素的key 删除该元素的执行时间 timeout如果值为0,则该元素立即删除。
* @return [type]
*/
public function delete($key){
$ret = $this->memcache->delete($key,0);
return $ret;
}
}
然后调用dlufmemcache:
1 $memcache = new dlufMemcache('127.0.0.1',11211);
2 $memcache->set('memcache','come on dluf&baidu !!!!!!');
3 $ret = $memcache->get('memcache');
4 echo print_r($ret,true);
运行输出可见:

缓存MEMCACHE php调用(一)的更多相关文章
- 缓存MEMCACHE php调用
在项目中,涉及大访问量时,合理的使用缓存能减轻数据库的压力,同时提升用户体验.即在非实时性的需求的前提下,一小段时间内(若干秒),用于显示的数据从缓存中获取的,而不用直接读取数据库,能有效的减少数据库 ...
- 缓存 memcache 小白笔记
W: Memcached是神魔? Q:Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. W:原理图 Q:如下 1浏览器 2 服务器 3 数据库 4 memcac ...
- 使用缓存Memcache存储access_token
接上篇文本,千辛万苦终于拿到了access_token. 正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效.目前,获取access_token ...
- 使用缓存Memcache存储更新微信access token
关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_ ...
- python运维开发(十一)----python操作缓存memcache、redis
内容目录: 缓存 memcache redis memcache Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数 ...
- 分布式缓存Memcache和Redis
引言 针对于如今计算机的CPU和网络设施,相应用程序来说,运行效率的瓶颈.已经不是代码的长度(实现同一个功能)和带宽了,而是,代码訪问资源的过程.即:让我们的程序慢下来的罪魁祸首就是IO操作. 程序从 ...
- php5.4之分布式缓存memcache(windows7下安装配置)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qq1355541448/article/details/36663203 使用理由:就是为了频繁查询 ...
- 分布式缓存 — memcache
MemCache是一个自由.源码开放.高性能.分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度.Mem ...
- 【系统架构】缓存Memcache 使用原子性操作add,实现并发锁
原文地址 memcache中Memcache::add()方法在缓存服务器之前不存在key时, 以key作为key存储一个变量var到缓存服务器.我们使用add来向服务器添加一个键值对应,如果成功则添 ...
随机推荐
- 如何在Linux(Ubuntu)上安装Redmine
费话就不多说了,本文主要描述如何在如何在Linux(Ubuntu)上安装Redmine.通过这篇文章你将了解如下内容. TL;DR 在Linux(Ubuntu)上安装Redmine的基本流程 配置ph ...
- str2-045漏洞事件,你想要的这里都有
话说昨天一觉醒来,发现整个安全圈被一个名为str2-045的漏洞霸屏了,好多小伙伴已经开始了喜刷刷的艰苦奋斗过程.然而对于很多小白童鞋来讲,他们可能还是处于懵逼的状态,别急,咱们专门为你们做了一期专题 ...
- Drools规则引擎入门指南(三)——使用Docker部署Workbench
其实本来我也是打算使用Tomcat来部署Workbench的,但是在网上看了几篇文章,超级繁琐的配置.各种版本.实在看不下去了索性就直接使用Docker来部署了.本次部署的版本是最新稳定版,对应dro ...
- apollo入门demo实战(二)
1. apollo入门demo实战(二) 1.1. 下载demo 从下列地址下载官方脚本和官方代码 https://github.com/nobodyiam/apollo-build-scripts ...
- Powermock2.0.0 详细 总结
目录 1 单元测试 2 Junit测试框架 2.1 Junit是什么 2.2 Junit 能做什么? 3 Junit测试的局限性 4 Mock技术 5 相关的Mock工具 5.1 Mockito.Ea ...
- feh: linux终端下看图片的好工具
1) 普通浏览 $ feh * 可以察看当前目录下的所有图片,以及当前子目录里的所有图片 2) 播放幻灯片 (-D) $ feh -D 2 *.jpg 对所有jpg以幻灯片的方式播放,每两秒放一张 ...
- Ubuntu 18.04基础软件安装
1.fcitx 这个应该是最基础的了,虽然系统自带的也有,不过说实话可能是我还不会配置,我觉得是不好用,坚持用了一周后还是换回了小企鹅,最初是装小企鹅时失败了被迫坚持用了一周,当时失败情况是这样的,使 ...
- 1.Git起步-Git的三种状态以及三种工作区域、CVCS与DVCS的区别、Git基本工作流程
1.Git基础 版本控制系统是一种用于记录一个或多个文件内容变化,以便将来查阅恢复特定版本修订情况的系统. Git是一种分布式版本控制系统(Distributed Version Control Sy ...
- MySQL(1)---索引
索引 什么是索引? 索引是帮助Mysql提高获取数据的数据结构,换一句话讲就是“排好序的快速查找的数据结构”. 一.索引的分类 MySQL主要的几种索引类型:1.普通索引.2.唯一索引.3.主键索引 ...
- 用canvas实现红心飘飘的动画效果
两周前,项目里需要实现一个红心飘飘的点赞效果.抓耳挠腮了老半天,看了几篇大佬的文章,终于算是摸了个七七八八.不禁长叹一声,还是菜啊.先来看一下效果:(传送门进去点一波) 一.Bezier曲线运动轨迹 ...