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 of arbitrary data (strings, objects) from results of database calls, API calls, 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 API is 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
[PHP_MEMCACHE]
extension=php_memcache.dll
- 重启apache
3.4 测试程序
01 |
<?php |
02 |
$memcache = new Memcache; |
03 |
$memcache ->connect( "localhost" ,11211); #根据情况要把 "localhost" 改为 "127.0.0.1" |
04 |
05 |
echo "Server's version: " . $memcache ->getVersion() . "<br />\n" ; |
06 |
07 |
$tmp_object = new stdClass; |
08 |
$tmp_object ->str_attr = "test" ; |
09 |
$tmp_object ->int_attr = 123; |
10 |
11 |
$memcache ->set( "key" , $tmp_object ,false,10); |
12 |
echo "Store data in the cache (data will expire in 10 seconds)<br />\n" ; |
13 |
14 |
echo "Data from the cache:<br />\n" ; |
15 |
var_dump( $memcache ->get( "key" )); |
16 |
?> |
不出错,就说明大功告成了。
原文: http://www.infony.co.cc/?p=322
- membercache.rar (55.7 KB)
转载请注明:苏demo的别样人生 » windows下安装 memcache + php