memcached的安装与使用


memcache 
在服务端安装的管理内存的软件
MemCache缓存系统最主要的就是为了提高动态网页应用,分担数据库检索的压力。
对于网站流量比较大的,可以使用memcache缓解数据库的压力,主要的焦点集中在以下两个方面:
1. 使用MemCache作为中间缓存层减少数据库的压力。
2. MemCache分布式的应用。


1.apache用CPU

2.MEMCACHE用内存

3.MYSQL用硬盘

三个各司其职,尽可能的占用服务器的所有资源,不就让其利用率最大化吗?


memcache是完全在PHP框架内开发的【基于PHP】
memecached是使用libmemcached的【基于C,效率高】
从手册上看,memcached 会比 memcache 多几个方法,使用方式上都差不多。



安装方法:
1.下载安装包 地址: http://yun.baidu.com/s/1c06tCOC
2.放入环境中,比如:E:\xampp\memcached
3.Ctrl+R 输入CMD 打开
4.当前默认是C盘,输入指令到刚刚的文件夹.eg:1.cd.. 2.cd.. 3.cd e: 4.cd xampp 5.cd memcached 
5 .输入安装指令:memcached.exe -d install
6.在计算机-管理-服务 可以查看到memcached;
   查看开启的端口:netstat -a;(是否有11211端口,有则已经开启)
   测试端口号查看信息:telnet 192.168.213.18 11211;stats;quit;(ipconfig查找自己的IP)(stats输出相关信息)(quit退出)
7.运行:memcached.exe -d start
8.卸载:memcached.exe -d uninstall
9.查看可以用的命令:memcacached.exe -h


启动Memcache 常用参数
-p <num>   设置端口号(默认不设置为: 11211)
-U <num>   UDP监听端口(默认: 11211, 0 时关闭) 
-l <ip_addr> 绑定地址(默认:所有都允许,无论内外网或者本机更换IP,有安全隐患,若设置为127.0.0.1就只能本机访问)
-d   独立进程运行
... -d start 启动memcached服务 
... -d restart 重起memcached服务 
... -d stop|shutdown 关闭正在运行的memcached服务 
... -d install 安装memcached服务 
... -d uninstall 卸载memcached服务 
-u <username> 绑定使用指定用于运行进程<username>
-m <num>  允许最大内存用量,单位M (默认: 64 MB)
-P <file> 将PID写入文件<file>,可以使得后边进行快速进程终止, 需要与-d 一起使用
-M 内存耗尽时返回错误,而不是删除项 
-c  最大同时连接数,默认是1024 
-f 块大小增长因子,默认是1.25 
-n 最小分配空间,key+value+flags默认是48 
-h 显示帮助


Stats内容
stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,
执行 stats 命令显示了关于当前 memcached 实例的信息: 
STAT pid 22459                             进程ID 
STAT uptime 1027046                        服务器运行秒数 
STAT time 1273043062                       服务器当前unix时间戳 
STAT version 1.4.4                         服务器版本 
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的) 
STAT rusage_user 0.040000                  进程累计用户时间 
STAT rusage_system 0.260000                进程累计系统时间 
STAT curr_connections 10                   当前打开连接数 
STAT total_connections 82                  曾打开的连接总数 
STAT connection_structures 13              服务器分配的连接结构数 
STAT cmd_get 54                            执行get命令总数 
STAT cmd_set 34                            执行set命令总数 
STAT cmd_flush 3                           指向flush_all命令总数 
STAT get_hits 9                            get命中次数 
STAT get_misses 45                         get未命中次数 
STAT delete_misses 5                       delete未命中次数 
STAT delete_hits 1                         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 auth_cmds 0 
STAT auth_errors 0 
STAT bytes_read 15785                      读取字节总数 
STAT bytes_written 15222                   写入字节总数 
STAT limit_maxbytes 1048576                分配的内存数(字节) 
STAT accepting_conns 1                     目前接受的链接数 
STAT listen_disabled_num 0                 
STAT threads 4                             线程数 
STAT conn_yields 0 
STAT bytes 0                               存储item字节数 
STAT curr_items 0                          item个数 
STAT total_items 34                        item总数 
STAT evictions 0                           为获取空间删除item的总数 










常用操作:
1.存储数据:
add name flag time lenght //eg: add one 1 0 2 添加了名字叫one,标志为1,永久存储,存的字段为2个长度,点击回车
value //aa【长度为两个的值】
2.查询数据:
get name//输出aa
3.删除数据
delete name//删除aa
4.删除所有数据:
flush_all//删除所有
5.遍历数据
stats cachedump 1 2//遍历数据,flag为1,显示2条



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

在WIN下的配置安装:

PHP扩展配置:

1.下载dll文件:http://yun.baidu.com/s/1qWoupjA

2.在php.ini中配置加入:extension=php_memcache.dll

3.输出phpinfo();  //进行测试,看是否配置成功,搜索若有MEMCACHE的话,则成功。


常用函数总结:

	// phpinfo();



	//1.创建对象memcache
	$mem= new Memcache;

	//2.链接memcache服务器
	$mem->connect('localhost',11211);
	//2.向连接池中添加一个memcache服务器,通过哈希函数,系统会自动均匀分配到每一个连接池的缓冲
	$mem->addServer('ip',11211);//set get的时候,自动分配权重,不必管他如何分配,如何集中


	//3.存储 add 可以添加任何类型的资源
	$mem->add('one','this is add',MEMCACHE_COMPRESSED,0);//存储31天就得用时间戳
	$mem->add('two',array('111',222,333));//添加数组类型

	//4.修改set/replace  若name不存在,则为add功能
	$mem->set('one','this is set change add',MEMCACHE_COMPRESSED,0);//当不存在时,add功能
	$mem->set('three','this is set',MEMCACHE_COMPRESSED,0);//当不存在时,add功能
	$mem->set('four','this is set 31days',MEMCACHE_COMPRESSED,time()+60*60*24*31);//这种时间的设置有问题

	//5.获取get
	var_dump($mem->get('one'));
	var_dump($mem->get(array('one','two','three','four')));//也可以连续获取值


	//6.删除delete
	$mem->delete('one');
	var_dump($mem->get('one'));//false 因为删除了one

	//7.删除所有flush
	$mem->flush();
	var_dump($mem->get('one'));//false 因为清空了所有

	//8.关闭链接
	$mem->close();


memcached服务器的安全防护

1. 内网访问 
    memcached -d -m 1024 -u root –l 192.168.0.10 –p 11211 –c 1024 start 
 2. 设置防火墙 
    iptables –F
    iptables –P INPUT DROP 
    iptables –A INPUT –p tcp  –s 192.168.0.10 –-dport 11211 –j ACCEPT 
    iptables –A INPUT –p udp –s 192.168.0.10 –-dport 11211 –j ACCEPT

memcache 是如何发挥其作用的
$mem= new Memcache;

	$mem->connect('localhost',11211);//链接缓存

	$sql="select username from zb_user";

	//从MEM内存要数据
	$key=md5($sql);//用意:相同的SQL语句,则KEY相同,MD5使长度相同
	$data=$mem->get($key);//调用数据,把数据返回到$data

	if(empty($data)){
		//如果为空,证明内存中没有缓存,访问数据库
		try {
			$pdo= new PDO("mysql:host=localhost;dbname=shixun_test","root","root");
		} catch (PDOException $e) {
			echo "数据库链接失败:".$e->getMessage();
		}
		$stmt = $pdo ->prepare($sql);
		$stmt->execute();
		$data=$stmt->fetchAll(PDO::FETCH_ASSOC);

		//把查询道德数据放入缓存中
		$mem->set($key,$data,MEMCACHE_COMPRESSED,3);
		echo "这里访问了数据库";
	}

	
	print_r($data);
	
	$mem->close();



 

你可能感兴趣的:(memcached的安装与使用)