Memcache是什么?
Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载与压力。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable。
Memcache官方网站:
http://www.danga.com/memcached
http://memcached.org/ 更多详细的信息可以来这里了解 :)
Memcached又是什么?
Memcache是该系统的项目名称,Memcached是该系统的主程序文件,以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。一个是项目名称,一个是主程序守护进程文件名。
那PHP中的Memcache是什么?
php中的所讲的memcache是用于连接Memecached的客户端组件。
如果你对php扩展模块中的memcache和memcached有疑问,请参考《php模块memcache和memcached区别分析》
Windows Memcache安装配置(For PHP5.3)
约定信息:
操作系统Windows7 X64
当前使用PHP版本:php-5.3.26-Win32-VC9-x86
Memcache Server版本:memcached-1.2.6-win32-bin
Memcache Client版本:php_memcache-2.2.6-5.3-vc9-x86(这里需要和PHP版本匹配) 注意:PHP for Win32有两个版本,所以PHP Memcache扩展也相应的有两个版本:
VC9 x86 Non Thread Safe(nts) 和 VC9 x86 Thread Safe
相关软件下载:
PHP程序下载地址:http://windows.php.net/download/
windows版本的Memcached下载地址:http://code.jellycan.com/memcached/
php_memcache.dll下载地址:http://downloads.php.net/pierre/
Tips: 请根据本机实际安装的PHP版本选择匹配的php_memcache.dll进行下载,VC9 x86 Non Thread Safe(nts) 和 VC9 x86 Thread Safe。
一、Memcached安装
将下载下来的windows版本的Memcached,解压之后放在硬盘的目录下,这里我放到了D:\phpweb\memcached目录,然后在运行中输入cmd进入命令行,进入到memcached目录中运行以下命令:
安装: memcached.exe --d install
启动:memcached.exe --d start
通过windows任务管理器我们可以看到memcached进程已经在运行了,如图
Tips: 以后memcached将作为windows的一个服务每次开机时自动启动。这样服务器端已经安装完毕了。
二、Memcached for PHP 扩展安装(让PHP加载Memcache)
很简单。不过还没完,你只是安装了一个memcached caching server,还没有和php建立关联。所以在php程序里还不能运用。
1、 下载php_memcache.dll,请自己查找对应的php版本的文件http://downloads.php.net/pierre/
2、 在你的 php.ini 加入一行 "extension=php_memcache.dll"(不含引号)
3、 在php.ini末尾加上
[Memcache]
memcache.allow_failover = 1 //是否在发生错误时(对用户)透明的转移到其他服务器。
memcache.max_failover_attempts=20 //定义在写入和获取数据时最多尝试的服务器次数(即:故障转移最大尝试数),仅和 memcache.allow_failover结合使用。
memcache.chunk_size =8192 //数据传输块大小,这个值越小网络I/O次数越多,如果发现莫名的速度降低, 可以尝试将此值调至32768。
memcache.default_port = 11211 //在尝试连接memcache的时候如果没有单独指定端口默认使用的TCP端口号。 具体运行配置详细可以查看:《PHP: 运行时配置- Manual》
4、 重新启动Apache,然后查看一下phpinfo,如果有memcache,那么就说明安装成功!
Tips:
-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 显示帮助
三、Memcache状态测试:
运行下面的php文件,如果有输出This is a test!,就表示环境搭建成功。开始领略Memcache的魅力把!
*
* $mem = new Memcache;
* $mem->connect('127.0.0.1', 11211);
* $mem->set('key', 'This is a memcache test page!', 0, 60);
* $val = $mem->get('key');
* echo $val; //output This is a test page!
* echo '';
* echo 'Memcache Server 版本:'.$mem->getVersion(); //output 1.2.6
* echo "
来源:未来往事
";
* ?>
Tips: 第2行部分,connect里面的参数第一个表示服务器地址,第二个表示端口号,具体函数详细说明可以查看:
《PHP: Memcache - Manual》
使用"telnet ip 端口号",然后使用:stats命令可以看到memcached的使用情况如下:
telnet 192.168.1.135 11211
stats
STAT pid 7380 //memcache服务器的进程ID
STAT uptime 5657 //服务器已经运行的秒数
STAT time 1372065199 //服务器当前的unix时间戳
STAT version 1.2.6 //memcache版本
STAT pointer_size 32 //当前操作系统的指针大小(32位系统一般是32bit)
STAT curr_items 1 //服务器当前存储的items数量
STAT total_items 2 //从服务器启动以后存储的items总数量
STAT bytes 68 //当前服务器存储items占用的字节数
STAT curr_connections 3 //当前打开着的连接数
STAT total_connections 7 //从服务器启动以后曾经打开过的连接数
STAT connection_structures 5 //服务器分配的连接构造数
STAT cmd_get 2 //get命令(获取)总请求次数
STAT cmd_set 2 //set命令(保存)总请求次数
STAT get_hits 2 //总命中次数
STAT get_misses 0 //总未命中次数
STAT evictions 0 //为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
STAT bytes_read 177 //总读取字节数(请求字节数)
STAT bytes_written 603 //总发送字节数(结果字节数)
STAT limit_maxbytes 67108864 //分配给memcache的内存大小(字节)
STAT threads 1 //当前线程数
END
补充:
rusage_user //进程的累计用户时间
rusage_system //进程的累计系统时间 补充与备注:
缓存命中率 = get_hits/cmd_get * 100%
get_misses的数字加上get_hits应该等于cmd_get
total_items == cmd_set == get_misses,当可用最大内存用光时,memcached就会删掉一些内容,等式就会不成立
疑问:在windows环境下启动memcache时如何加入参数:
打开注册表,在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 下面找到一个 ImagePath 的字符串项,正好是服务的执行路径的字符串,双击该串,在后面加入 -l 192.168.1.135 -m 1024 -p 11211 (访问ip为:192.168.1.135 使用1G内存,11211为端口),再启动服务。
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 显示帮助