php_memcache扩展
今天在一家招聘信息看到需要熟悉memcache,以前没接触过,用的都是redis,今天稍微看了下,在这里记述下一些基础点。
memcache是什么?
首先我们需要了解memcache是做什么的,他有什么作用?
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。
在有些地方我们会发现它会以memcached名字出现,我们只要知道他们能够指代这个缓存系统。memcache是指这个项目的名称,memcached是指系统服务端的程序。
memcache的安装:
下载地址:http://yunpan.cn/Q9QcS3dIAVe5A (这是我的一个网盘分享,大家也可以去网上找其他的版本下载,内含php_memcache.dll(php5.3))
网上的安装教程有很多,我在这里只简单的记述一下:
1. 下载memcache的windows版,解压放某个盘下面,比如在c:\memcached。
2. 在终端下找到解压的目录memcached,然后运行memcached.exe -d install命令。
3. 再输入memcached.exe -d start开发memcache服务。
4.下载php_memcache.dll,请自己查找对应的php版本的文件。
5. 在php.ini加入一行 extension=php_memcached.exe 。
6.重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
memcached指令:
在这里也记述一下memcache的服务端的一些基本指令,大家可以通过memcached.exe -help或-h指令进行查询。
-p 监听的TCP端口,默认是11211
-U 监听的UDP端口,默认是11211.为0时关闭
-l 连接的IP地址,默认是本机
-d
start 启动memcached服务
restart 重启memcached服务
stop|shutdown 关闭memcached服务
install 安装memcached服务
uninstall 卸载memcached服务
-u 以什么身份运行(仅在以root运行的时候有效)
-m 最大使用内存,单位MB,默认64MB
-c 最大连接数,默认为1024
-M 内存耗尽时提示错误而不是删除项
-f 最小分配空间 key+value+flags 默认是48
-h 显示帮助
memcache的使用:
安装好php_memcache.dll扩展之后,那么在PHP之中就可以连接memcache进行增删改查了。下面我们一步一步的来实战memcache。
首先,要使用存储的数据,不管是mysql、redis、还是我们这里将的memcache都是需要预先连接的。PHP中连接memcache同redis,有使用过php_redis扩展的同学们应该都能轻车熟路的使用memcache。具体如下:
$mem = new Memcache;
//params: host, port
$mem->connect("127.0.0.1", 11211);
程序分析:
$mem = new Memcache;
初始化一个Memcache对象。当你配置好php_memcache.dll后就可以直接通过Memcache类生成该类的对象。若在这里出现问题的同学应该回到前面去检查检查扩展的配置了。
$mem->connect("127.0.0.1", 11211);
连接目标memcached服务器,第一个参数是目标IP地址,第二个参数是端口,端口可以在开启memcache服务的时候设置。若这里出现问题,未连接成功的同学们应该去检查一下memcached服务是否成功开启。
连接好服务器后,我们就要开始对数据进行操作了。我们先从保存数据开始,在php中向缓存服务器增加一个条目使用Memcache::add,如下
$mem->set(‘key1’, ‘this is first value’,0 , 60);
这句代码就是向memcache中插入一个条目,该条目的key为’key1’,值为’this is first value’;如果你希望存储的数据经过压缩,那么你可以设置第三个参数为MEMCACHE_COMPRESSED,否则设置为0就可以了。当然你可以对数据设置一个过期时间,超过这个时间缓存服务器就会删除该条数据,设置为0表示不过期。注意前者不可以超过2592000秒(30天)。Set函数同样也可以保存数组,把value值传递一个数组就可以了。
数据存储好后,那么当我们需要该条数据的时候我们就可以通过Memcache::get从服务端检索出来。具体如下:
$val = $mem->get('key1');
只需要将要检索的数据的key值传递给Memcache::get 就可以了,那么函数就会返回响应的value值。
但是有的时候我一条条数据的来检索,会不会太麻烦,而且还会增加代码量。那么Memcache::get 当然也考虑到了这点,所以他支持你给他传递一个数组类型,然后返回数组中元素对应的value值的数组。
获取key1的value之后,我突然发现是错的。那么我需要修改key1的值,memcache中我们使用Memcache::replace 来修改memcached中的数据值。具体如下:
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val;
Replace函数的参数跟set的参数是一样的,这里就不多说了。
当我们有些数据不再需要使用的时候,那么我们就需要删除这些数据以免占空间。在memcached中我们是用Memcache::delete 来删除memcached中的key-value。具体如下:
$mem->delete('key1', 30);
Delete函数有两个参数,第一个参数为要删除数据的key值,第二个参数表示删除该元素的执行时间,就是多少时间后删除该元素,默认为0表示立即删除。
Php_memcached扩展还提供了一个把memcache服务器上的数据都清楚的函数Memcache::flush。有需要的时候直接使用$mem->flush()就可以了,没有任何参数.
php_memcache扩展的更多相关文章
- windows下XAMPP安装php_memcache扩展
windows下XAMPP安装php_memcache扩展 首先下载phpmemcache,地址为: http://up.2cto.com/2012/0522/20120522094758371.ra ...
- win10 64位安装memcache扩展和开启redis扩展
前面有关于win10下搭建wamp环境的介绍,在此不在赘述,php操作memcache有memcache库和memcached库,其中memcache是php内置的扩展库,支持面向对象和面向过程两种操 ...
- Windows下Memcache的安装及PHP扩展配置
一.下载 找到完整的memcache的Windows安装包,解压放在硬盘上,比如 F:\memcached.exe 二.安装 WIN7 64位双击打开这个exe可能只有一个空的窗口,不能输入任何命令, ...
- windows下安装Memcached服务器,PHP的memcache扩展
Memcahed 介绍:Memcahed是一个内存缓存服务器 (类似MySQL服务器) 作用:提高web的响应速度,例如缓存数据库查询结果 原理:把数据存到内存中 (提高速度的原因) 教程相关 系统: ...
- php 5.3 iis php_memcache 安装不上
有的服务器很扯淡,安装了很长时间的php_memcache 扩展 始终安装不上 具体原因不清楚 因为 php_memcache.dll php 官网上只有 最新支持的版本 例如 http://pecl ...
- PHP + Memcache 实现多服务器session共享
很多时候一个完整的系统可能运行在多个服务器上,如果这多个服务器之间需要共享session的话,那么php默认的files保存session的方式就无能为力了.这时我们可以考虑使用memcache 来接 ...
- ThinkPHP+Memcache的缓存方案总结
简介: ThinkPHP用S()方法可以缓存数据,这在访问数据库时非常有用,可以在有限时间内当数据库无变化时从缓存取数据,有变化时从数据库取数据. Memcached+Memcache是一个将数据保存 ...
- windows上phpstudy配置memcache
原文 http://blog.csdn.net/ltx06/article/details/78588448 总的来说,分两步:同时安装memcached软件服务和安装php_memcache ...
- memcache安装以及php_memcache.dll 扩展安装
php_memcache.dll扩展下载地址:http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/ 下载注意事项:选择匹配自己环 ...
随机推荐
- 网络协议_7层_TCP/IP
- Java 用jxl读取excel并保存到数据库(此方法存在局限,仅限本地电脑操作,放在服务器上的项目,需要把文件上传到服务器,详细信息,见我的别的博客)
项目中涉及到读取excel中的数据,保存到数据库中,用jxl做起来比较简单. 基本的思路: 把excel放到固定盘里,然后前段页面选择文件,把文件的名字传到后台,再利用jxl进行数据读取,把读取到的数 ...
- 攻防世界-PHP文件包含
<?php show_source(__FILE__); echo $_GET['hello']; $page=$_GET['page']; while (strstr($page, " ...
- webug第十二关:我系统密码忘记了!
第十二关:我系统密码忘记了! 文件上传 直接上传php一句话, 菜刀链接
- 新鲜出炉!阿里Java后端面经,已拿offer!
前面给大家分享了一篇字节跳动拿下offer的面经,很多小伙伴都私信我说收获很大,感兴趣的朋友可以回头去看看.很多小伙伴还问我有没有其他大厂的面试题分享,这不他来啦,阿里2020春招面试题给大家整理在下 ...
- 新鲜出炉!两万月薪的Java工程师面试题,看看你能做出来多少?
接口和抽象类的区别 接口. 一个类实现了多个接口,那么必须实现接口中所有的抽象方法,如果方法相同,那么只需要Override一次. 所有接口中的默认方法也可以被继承,但是如果两个接口有重名的默认方法, ...
- js 实现textarea剩余字数统计
1 针对textarea剩余字数统计 2 <div class="fankui-textarea"> 3 <span>留言:</span> &l ...
- Non Super Boring Substring 题解(hash+思维)
题目链接 题目大意 给你一个长度为d(d<=1e5)的字符串,要你求有多少个子串满足这个子串不包含长度大于等于k的回文子串 题目思路 首先可以hash预处理,然后O(1)用前缀hash值和后缀h ...
- Eclipse中自动生成局部变量
方法调用后,返回值自动赋值到一个新的局部变量中: (1)鼠标放到方法上,点击Ctrl+1 (2)选择 :Assign statement to new local variable(将语句赋给新的局部 ...
- c++11-17 模板核心知识(九)—— 理解decltype与decltype(auto)
decltype介绍 为什么需要decltype decltype(auto) 注意(entity) 与模板参数推导和auto推导一样,decltype的结果大多数情况下是正常的,但是也有少部分情况是 ...