windows下安装 memcache + php
1.memcache是什么Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
Memcached is an in-memory key-value store for small chunks ofarbitrary data (strings, objects) from results of database calls, APIcalls, or page rendering.
Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its APIis available for most popular languages.
和其他的Cache一样(我用过 Java的OSCache PHP的Smaty Cache和Symfony Cache),思路都是把动态网站经常被访问的资源,或者数据量很大的资源保存到内存中去,从而达到服务器负荷降低,响应加快的目的。不过Memcache似乎更加通用,他不是莫一种BS架构的插件,而是以Windows 服务或者是Linux 守护进程那样,以平行的方式提供API给服务器的其他应用程序。Cache对象以key-value这种Map结构保存在内存,memocache有一套特有的内存对象管理方式。详细运作原理可以参考Sina的Memcached深度分析(原创)。
memcached的基本设置:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25
-n 最小分配空间,key+value+flags默认是48
-h 显示帮助
2.Memcache主要用来做什么
用的最多的还是数据检索结果的缓存。因为现在服务器出现负荷过高的时候,多半和数据库瓶颈有关。对于那些80/20中的20%的特殊检索(特殊包括:查询特别频繁,检索特别复杂,返回结果特别大),如果如何怎么tuning,怎么优化,在走投无路升级硬件之前,可以考虑考虑memcache这一类的cache工具了。当然咯, 信息的刷新间隔和效率优化时反比的。对于那些一定要实时刷新的数据,使用Cache只会是搬起石头砸自己的脚。
另外,还有一个DB服务器侧的技术,就是SQL的Cache,比如Mysql Query Cache。这种技术对于那种频繁访问,且发行SQL是一样的query,是个很不错的选择。可以综合起来使用。
3.Windows下如何安装
PHP的官方网站有详细的说明,一个 pecl install memcache就可以一键搞定。可惜的是,Windows下不行,总会报
ERROR: Did not understand the completion status returned from msdev.exe.
这个错。
估计原因主要发生在编译系统上。Linux上的gcc是默认的,windows下没有相应的编译器所以出错。
还是有好人的,辛辛苦苦地把memcache编译成exe贡献给大家。
安装流程
3.1 下载windows版的memcache
http://code.jellycan.com/memcached/直接下载windows版本
上面已经是最新的稳定版啦,如果想要自己编译的,也可以看看他是怎么一步一步做的。
3.2 安装服务
[*]下载的zip解压缩到一个目录(G:\lib\memcached-1.2.6)
[*]如果是win7,请把memcached.exe的执行权限设为管理员
[*]安装服务 G:\lib\memcached-1.2.6>memcached.exe -d install
[*]启动服务 G:\lib\memcached-1.2.6>memcached.exe -d start
这个时候可以看看系统的服务,应该增加了一个memcached的服务
3.3 设定PHP的extention
[*]下载 php_memcache.dll (http://downloads.php.net/pierre/php_memcache-2.2.6-5.3-nts-vc9-x86.zip)
[*]把php_memcache.dll放到php的ext目录(G:\Program Files\PHP\ext)【此处的dll文件可能不正确,因为编辑问题,可以使用附件DLL文件】
[*]修改php.ini,引用这个extention
extension=php_memcache.dll
[*]重启apache
3.4 测试程序
view sourceprint?
01<?php
02$memcache= newMemcache;
03$memcache->connect("localhost",11211); #根据情况要把"localhost"改为 "127.0.0.1"
04
05echo"Server's version: ". $memcache->getVersion() . "<br />\n";
06
07$tmp_object= newstdClass;
08$tmp_object->str_attr = "test";
09$tmp_object->int_attr = 123;
10
11$memcache->set("key",$tmp_object,false,10);
12echo"Store data in the cache (data will expire in 10 seconds)<br />\n";
13
14echo"Data from the cache:<br />\n";
15var_dump($memcache->get("key"));
16?>
不出错,就说明大功告成了。
原文: http://www.infony.co.cc/?p=322
3.4 测试程序
开机时自启动 MEMCACHED
/usr/local/bin/memcached -d -m 10 -u root -l 122.225.96.117 -p 11211 -c 256 -P /tmp/memcached.pid
页:
[1]