今天总结一下如何在Windows操作系统中安装、启动和卸载memcached:
下载地址: http://download.csdn.net/download/wangshuxuncom/8249501
或者(https://files.cnblogs.com/files/chy123/memcached_win64%28jb51.net%29.rar)
2、解压获取到的压缩文件,将得到一个名为“memcached-1.2.6-win32-bin”的文件夹,将该文件夹拷贝到自认为适当的位置(比如拷贝到C盘根目录);
3、通过cmd命令进入Windows的命令行模式,输入如下命令“cd /d C:\memcached-1.2.6-win32-bin”,敲击回车键,得到下图:
4、下面依次介绍memcached的安装、启动和卸载:
a、在第3步中输入“memcached.exe -d install”,然后点击回车键,得到下图:
b、上述命令执行过后在“服务”列表中会看到memcached已列入其中:
a、在上图中我们看到新安装的memcached并没有处于启动状态,如何启动它呢?在命令行窗口中执行“memcached.exe -d start”,得到下图:
b、执行过上面的命令后,刷新“服务”列表,即可看到memcached已经启动:
或者启动任务管理器查看进程:
a、在卸载memcached以前,要先停止其启动,否则会出现如下问题:
b、通过在命令行窗口执行“memcached.exe -d stop”即可将memcached置于停用状态,如下图:
c、在命令行窗口执行“memcached.exe -d uninstall”即可将memcached卸载下来。
d、安装完成后,下面就进入测试的环节
输入命令行telnet 127.0.0.1 11211进行测试:如果安装成功的话会跳出一个dos页面,开始什么都不显示,回车后输入命令 stats 查看统计信息,如下图,说明服务器运作正常。(备注:win7中可能会出现“telnet’不是内部或外部命令”的错误,这是因为系统中默认没有安装telnet的缘故,可在“控制面板”->“程序”->“程序和功能”->“打开或关闭Windows功能”中打开“Telnet客户端”。)
连接上端口后输入 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 服务器向网络发送的总字节数
e、windows php5.4.3添加memcache扩展
memcache与memcached的区别:Memcached是一个内存缓存系统,而Memcache是php的一个扩展,是php用于操作和管理Memcached的工具。如果安装了Memcached但没有安装Memcache,等于只是安装了缓存服务,但是php无法操控Memcached,但是可以使用命令行来操控Memcached;如果安装了Memcache却没安装Memcached,则无法使用。只有同时安装了Memcached和Memcache,才能在PHP中使用Memcached。
php5.4.3添加memcache扩展,必须是指定对应的版本扩展,不然不生效。
首先下载php5.4对应版本的php_memcache.dll扩展。
下载地址:http://download.csdn.net/detail/wwenwei2011/5102338
https://pecl.php.net/package/memcache
使用phpinfo()函数查看PHP的版本信息,是否线程安全,以及编译版本,这会决定扩展文件版本,以及php.ini
的地址,以及扩展存放地址,如果是wamp。一定要注意版本位数不然容易出现Fatal error: Class 'Memcache' not found
解压缩后,将php_memcache.dll拷贝至php的ext目录下
修改php.ini,(PS:此php.ini文件是在Apache目录)在该文件中加入:
extension=php_memcache.dll
重启Apache后,使用phpinfo查看扩展是否成功安装
参考文档:http://www.tuicool.com/articles/nyIjQvZ
http://www.jb51.net/article/63601.htm
https://pecl.php.net/package/memcache
测试php链接:memcache扩展包中自带的example.php
管理工具:
1:C# 实现 MemCache 监控管理工具 参考网址:http://www.cnblogs.com/xffy1028/archive/2013/02/01/2861706.html 这个客户端在windows下面用还行
2:web页面
i:参考网址:http://www.junopen.com/memadmin/
ii:参考网址:http://www.treesoft.cn/dms.html
iii:memcache扩展包中自带的memcache.php 参考网址:http://www.cnblogs.com/zhuque/archive/2012/11/05/2763346.html
memcached安全验证:参考文档:http://www.jb51.net/article/27195.htm
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单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
• 最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA
60*60*24*30 控制
• 最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
• 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制,
它是默认的slab大小
• 最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过
settings.maxconns=1024 进行控制
• 跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式
访问Memcached:telnet 主机名 端口号
查看总状态:stats
查看某项状态:stats curr_connections
禁止LRU
有些情况下LRU机制反倒会造成麻烦。memcached启动时通过“-M”参数可以禁止LRU,
如下所示:
$ memcached -M -m 1024
启动时必须注意的是,小写的“-m”选项是用来指定最大内存大小的。不指定具体数值则
使用默认值64MB。
指定“-M”参数启动后,内存用尽时memcached会返回错误。话说回来,memcached毕
竟不是存储器,而是缓存,所以推荐使用LRU。
在安装的时候必须打开:./configure --enable-threads
安装完之后,启动的时候看看帮助信息有没有这条:
-t <num> number of threads to use, default 4
如果存在该选项,说明已经支持了线程,就可以在启动的时候使用 -t 选项来启动多线程
然后启动的时候必须加上你需要支持的线程数量:
/usr/local/memcache/bin/memcached -t 1024