未来往事
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的魅力把!
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 显示帮助

作者:Rinald @『未来往事 | 记录生活,存储回忆!
原文地址:http://fity.cn/post/394/
本站采用「署名 4.0 国际(CC BY 4.0)」创作共享协议。通俗地讲,只要在使用时署名,那么使用者可以对本站所有原创内容进行转载、节选、混编、二次创作,允许商业性使用。除非在文章正文内单独说明,本站欢迎各种形式的转载。互联网技术更新很快,本站很多文章都具有实效性,我会及时更新原文,但转载的文章无法通知更新。为了不给读者造成困惑或误导,请大家在转载时保留此出处信息。
企业名录 Homepage
2016/07/29 09:40
请问下 NTS 和 TS版本有什么不同?
Rinald 回复于 2016/08/01 08:40
NoneThread Safe对应php的FastCGI执行方式、Thread Safe对应php的ISAPI执行方式
第1页 / 共1页 第一页 1 最后页
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮(电子邮件地址不会被公开, 仅用于接收评论回复提醒使用)
OpenID登入 权限选项 表情