windows下安装memcache并为php开启memcache扩展


Window 下安装 Memcached
官网上并未提供 Memcached 的Window平台安装包,我们可以使用以下链接来下载,你需要根据自己的系统平台及需要的版本号点击对应的链接下载即可:

32位系统 1.2.5版本:http://static.runoob.com/download/memcached-1.2.5-win32-bin.zip
32位系统 1.2.6版本:http://static.runoob.com/download/memcached-1.2.6-win32-bin.zip
32位系统 1.4.4版本:http://static.runoob.com/download/memcached-win32-1.4.4-14.zip
64位系统 1.4.4版本:http://static.runoob.com/download/memcached-win64-1.4.4-14.zip
32位系统 1.4.5版本:http://static.runoob.com/download/memcached-1.4.5-x86.zip
64位系统 1.4.5版本:http://static.runoob.com/download/memcached-1.4.5-amd64.zip
在 1.4.5 版本以前 memcached 可以作为一个服务安装,而在 1.4.5 及之后的版本删除了该功能。因此我们以下介绍两个不同版本 1.4.4 及 1.4.5的不同安装方法:

memcached <1.4.5 版本安装
1、解压下载的安装包到指定目录。

2、在 1.4.5 版本以前 memcached 可以作为一个服务安装,使用管理员权限运行以下命令:

c:\memcached\memcached.exe -d install

windows下安装memcached时总是提示“failed to install service or service already installed”,

  解决办法是:

  1.在开始菜单里找到附件以管理员身份运行命令提示符(最关键的一步)

  2.转到memcached程序文件夹下

  3.运行命令行开始安装

  memcached.exe -d install

  正常情况下到这一步就已经安装完毕了,如果还是提示"failed to install service or service already installed"

  这时需要先执行卸载命令"memcached.exe -d uninstall"

  执行之后重新安装"memcached.exe -d install" 即可发现没有提示信息也没有报错,

  此时查看memcache信息"memcached.exe -h"

3、然后我们可以使用以下命令来启动和关闭 memcached 服务:

c:\memcached\memcached.exe -d start
c:\memcached\memcached.exe -d stop
4、如果要修改 memcached 的配置项, 可以在命令行中执行 regedit.exe 命令打开注册表并找到 "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached" 来进行修改。

如果要提供 memcached 使用的缓存配置 可以修改 ImagePath 为:

"c:\memcached\memcached.exe" -d runservice -m 512
-m 512 意思是设置 memcached 最大的缓存配置为512M。

此外我们还可以通过使用 "c:\memcached\memcached.exe -h" 命令查看更多的参数配置。

5、如果我们需要卸载 memcached ,可以使用以下命令:

c:\memcached\memcached.exe -d uninstall
memcached >= 1.4.5 版本安装
1、解压下载的安装包到指定目录。

2、在 memcached1.4.5 版本之后,memcached 不能作为服务来运行,需要使用任务计划中来开启一个普通的进程,在 window 启动时设置 memcached自动执行。

我们使用管理员身份执行以下命令将 memcached 添加来任务计划表中:

schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"
注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。

注意:-m 512 意思是设置 memcached 最大的缓存配置为512M。

注意:我们可以通过使用 "c:\memcached\memcached.exe -h" 命令查看更多的参数配置。

3、如果需要删除 memcached 的任务计划可以执行以下命令:\

schtasks /delete /tn memcached
4、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 显示帮助

5、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 显示帮助
设置参数时需要先停止memcached,然后用命令行设置,比如:
D:\memcached> memcached.exe -m 1 -d start

6、停止memcached

D:\memcached> memcached.exe -d stop

7、卸载memcached

D:\memcached> memcached.exe -d uninstall

8、修改参数

windows下需要通过修改注册表信息进行设置,打开注册表,找 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached 
在其中有一个“ImagePath”项,值为: 
"D:\memcached\memcached.exe" -m 1024 -c 2048 -p 11210 -d runservice 
在后面加上“-m 1024 -c 2048 -p 11210”。等即可。重启服务后生效

查看memcached运行参数

运行里面输入:telnet ip 端口
进入后,输入stats

STAT pid 22362 //memcache服务器的进程ID
  STAT uptime 1469315 //服务器已经运行的秒数
  STAT time 1339671194 //服务器当前的unix时间戳
  STAT version 1.4.9 //memcache版本
  STAT libevent 1.4.9-stable //libevent版本
  STAT pointer_size 64 //当前操作系统的指针大小(32位系统一般是32bit,64就是64位操作系统)
  STAT rusage_user 3695.485200 //进程的累计用户时间
  STAT rusage_system 14751.273465 //进程的累计系统时间
  STAT curr_connections 69 //服务器当前存储的items数量
  STAT total_connections 855430 //从服务器启动以后存储的items总数量
  STAT connection_structures 74 //服务器分配的连接构造数
  STAT reserved_fds 20 //
  STAT cmd_get 328806688 //get命令(获取)总请求次数
  STAT cmd_set 75441133 //set命令(保存)总请求次数
  STAT cmd_flush 34 //flush命令请求次数
  STAT cmd_touch 0 //touch命令请求次数
  STAT get_hits 253547177 //总命中次数
  STAT get_misses 75259511 //总未命中次数
  STAT delete_misses 4 //delete命令未命中次数
  STAT delete_hits 565730 //delete命令命中次数
  STAT incr_misses 0 //incr命令未命中次数
  STAT incr_hits 0 //incr命令命中次数
  STAT decr_misses 0 //decr命令未命中次数
  STAT decr_hits 0 //decr命令命中次数
  STAT cas_misses 0 //cas命令未命中次数
  STAT cas_hits 0 //cas命令命中次数
  STAT cas_badval 0 //使用擦拭次数
  STAT touch_hits 0 //touch命令未命中次数
  STAT touch_misses 0 //touch命令命中次数
  STAT auth_cmds 0 //认证命令处理的次数
   STAT auth_errors 0 //认证失败数目
  STAT bytes_read 545701515844 //总读取字节数(请求字节数)
  STAT bytes_written 1649639749866 //总发送字节数(结果字节数)
  STAT limit_maxbytes 2147483648 //分配给memcache的内存大小(字节)
  STAT accepting_conns 1 //服务器是否达到过最大连接(0/1)
  STAT listen_disabled_num 0 //失效的监听数
  STAT threads 4 //当前线程数
  STAT conn_yields 14 //连接操作主动放弃数目
  STAT hash_power_level 16 //
  STAT hash_bytes 524288
  STAT hash_is_expanding 0
  STAT expired_unfetched 30705763
  STAT evicted_unfetched 0
  STAT bytes 61380700 //当前存储占用的字节数
  STAT curr_items 28786 //当前存储的数据总数
  STAT total_items 75441133 //启动以来存储的数据总数
  STAT evictions 0 //为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
  STAT reclaimed 39957976 //已过期的数据条目来存储新数据的数目

 

  4、应该重点关注的变量:

  笔者认为,使用memcache应该主要关注如下变量(已经在上面标红)

  cmd_get  get请求总次数

  get_hits   get请求命中总次数

  get_misses get请求失败总次数

  这三个量可以算出MC的命中率get_hits / cmd_get  或者 get_hits / (get_hits+get_misses) ,这个是使用MC服务最重要的一个量,命中率越高越好。

  另外,需要关注:

  limit_maxbytes  为MC分配的内存大小

  curr_items   当前存储的条目数量

  bytes 当前服务使用的MC内存

  显然,这两个量标识了,你当前还有多少内存空间富余,也非常重要,当这两个量接近时,可以及时给MC扩容,根据笔者的经验,MC分配的空间不是全部能用的,实际能用的大约是分配空间的 90% 左右,为什么?笔者没有看过memcache的源码,猜测是因为 memcached 本身的key  value的索引也是需要耗费一定的内存的,等读了源码再来跟新。 

  好了,并没有读源码,不过看了几篇关于memcached的介绍,回头重新写一篇博文吧。。。这里简单说下,简单可以理解为MC的存储分配是按照分片来划分的,而每片按照一定的比例增长,如果一片存储区域不能存下当前的value,那么需要换一片更大的存储空间,就会产生一定的存储资源浪费。

  evictions 为获取空闲内存而删除的items数

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、PHP安装memcache扩展

   1、下载memcache.dll扩展

下载地址:

http://windows.php.net/downloads/pecl/releases/memcache/3.0.8/


下载注意事项:选择匹配自己环境的版本以及线程安全版本。

查看自己PHP版本:phpinfo();

对应扩展文件这里

解压出来:

将其中的php_memcache.dll 扩展文件拷贝到 php 的扩展目录中,我的(D:\Xampp\php\ext)

打开php的php.ini文件

最后添加 一行代码:

extension=php_memcache.dll

然后保存之后,重启服务器

在使用phpinfo()查看

(如果没有显示,肯定是版本没对应)

---------------------------------------------------------------------------------------------------------

memcache服务器安全: 

Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄露被其他无关人员查看,重则服务器被入侵,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的情况,这些都是我们未知的,所以危险性是可以预见的。为了安全起见,做两点建议,能够稍微的防止黑客的入侵或者数据的泄露。 

现在就关于修改memcache服务器配置的问题说明如下: 

1>用内网ip的方式提供web应用服务器调用,不允许直接通过外网调用,如将memcache服务器放在192.168.1.55的服务器上 

2>修改端口,如改为11200 

3>分配内存,如分配1024M(1G内存) 

方法如下: 

1>开始>运行:CMD(确定) 

2>cd C:\memcached(回车) 

3>memcached -m 1024 -p 11200 -l 192.168.1.55(回车) 

注意,此时命令行不会回到C:\memcached>状态,并且实际上memcache服务器悄悄变为stop状态了。此窗口不可以关闭。新开一个cmd窗口 

4>开始>运行:CMD(确定) 

5>cd C:\memcached(回车) 

6>memcached -d start(回车)可以关闭此cmd窗口。 

此时可以使用新配置的memcache服务器了。 


上述方法虽然解决了修改默认配置的问题,但是始终会有一个cmd窗口不可以关闭,否则就回到11211端口的默认配置。 

更好的解决方案是通过修改服务的注册表配置: 

1>开始>运行:regedit(回车) 

2>在注册表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server 

3>默认的ImagePath键的值是:"c:\memcached\memcached.exe" -d runservice,改为:"c:\memcached\memcached.exe" -d runservice -m 512 -p 11200 -l 192.168.1.55(确定,关闭注册表) 

4>我的电脑(右键)>管理>服务 找到memcache的服务,重新启动一次即可生效。 


此时,同网段内的电脑仍然可以利用这台memcache服务器,我们限定指定的web应用服务器才能够使用,通过防火墙的方式。如只允许192.168.1.2这台Web服务器对Memcache服务器的访问,能够有效的阻止一些非法访问,相应的也可以增加一些其他的规则来加强安全性,这个可以根据自己的需要来做。 

Memcache服务器端都是直接通过客户端连接后直接操作,没有任何的验证过程,这样如果服务器是直接暴露在互联网上的话是比较危险,轻则数据泄露被其他无关人员查看,重则服务器被入侵,因为Mecache是以root权限运行的,况且里面可能存在一些我们未知的bug或者是缓冲区溢出的情况,这些都是我们未知的,所以危险性是可以预见的。为了安全起见,我做两点建议,能够稍微的防止黑客的入侵或者数据的泄露。 

内网访问 
最好把两台服务器之间的访问是内网形态的,一般是Web服务器跟Memcache服务器之间。普遍的服务器都是有两块网卡,一块指向互联网,一块指向内网,那么就让Web服务器通过内网的网卡来访问Memcache服务器,我们Memcache的服务器上启动的时候就监听内网的IP地址和端口,内网间的访问能够有效阻止其他非法的访问。 
# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid 
Memcache服务器端设置监听通过内网的192.168.0.200的ip的11211端口,占用1024MB内存,并且允许最大1024个并发连接 

设置防火墙 
防火墙是简单有效的方式,如果却是两台服务器都是挂在网的,并且需要通过外网IP来访问Memcache的话,那么可以考虑使用防火墙或者代理程序来过滤非法访问。 
一般我们在Linux下可以使用iptables或者FreeBSD下的ipfw来指定一些规则防止一些非法的访问,比如我们可以设置只允许我们的Web服务器来访问我们Memcache服务器,同时阻止其他的访问。 
# iptables -F 
# iptables -P INPUT DROP 
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT 
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11211 -j ACCEPT 
上面的iptables规则就是只允许192.168.0.2这台Web服务器对Memcache服务器的访问,能够有效的阻止一些非法访问,相应的也可以增加一些其他的规则来加强安全性,这个可以根据自己的需要来做 


很多时候需要监控服务器上的Memcached运行情况,比如缓存的查询次数,命中率之类的。但找到的 
那个memcached-tool是linux下用perl写的,我也没试过windows能不能用。后来发现个简单的办法可以做到,就是使用Telnet。 

1、windows系统连接memcached端口 cmd命令行中键入telnet 192.168.1.1 11211 11211是memcached绑定的端口号。 
2、连接上端口后输入 stats命令,即可得到描述Memcached服务器运行情况的参数。 
STAT pid 4356 服务器进程ID 
STAT uptime 56625 服务器运行时间,单位秒 
STAT time 1225249079 服务器当前的UNIX时间 
STAT version 1.1.0 服务器的版本号 
STAT pointer_size 64 
STAT rusage_user 151.845489 该进程累计的用户时间(秒:微妙) 
STAT rusage_system 121.667603 该进程累计的系统时间(秒:微妙) 
STAT ibuffer_size 4096 
STAT curr_connections 13 连接数量 
STAT total_connections 54136 服务器运行以来接受的连接总数 
STAT connection_structures 318 服务器分配的连接结构的数量 
STAT cmd_get 100595 取回请求总数 
STAT cmd_set 6510 存储请求总数 
STAT get_hits 96543 请求成功的总次数 
STAT get_misses 4052 请求失败的总次数 
STAT bytes_read 4427679 服务器从网络读取到的总字节数 
STAT bytes_written 6585596 服务器向网络发送的总字节数 

1>、uptime 是memcached运行的秒数, 
2>、cmd_get是查询缓存的次数。 
3>、这两个数据相除一下就能得到平均每秒请求缓存的次数——最近niupu的流量很低,所以平均也就一秒请求一次多, 
这么点大的压力,用文件系统缓存一样没问题,根本不会体现出使用memcached的优越。 
4>、下面的cmd_set 就是设置key=>value的次数。整个memcached是个大hash,用cmd_get没有找到的内 
容,就会调用一下cmd_set写进缓存里。 
5>、紧跟着是get_hits,就是缓存命中的次数。缓存命中率 = get_hits/cmd_get * 100%。 
6>、下面的get_misses的数字加上get_hits应该等于cmd_get。 
7>、而total_itemscurr_items表示现在在缓存中的键值对个数. 
8>、在图上total_items == cmd_set == get_misses,不过当可用最大内存用光时,memcached就会删掉一些内容,上面的等式就不成立了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值