php学习笔记(二十四)php使用memcache扩展库的使用和安装

<?php 
/**
 * Memcached(内存缓存)
 * 	高性能分布式内存对象缓存系统(通过内存维护一个巨大的hash表(key=>value))
 * 	内存维护软件(减少IO 150k 开源)
 * 	http://localhost:11211
 * 
 * memcached基于libevent事件库
 * linux:
 * 		1.安装libevent
 * 		2.安装memcached并指定libevent的位置
 * 		3.使用:
 * 			启动:memcached -d -m 128 -l 192.168.0.1 -p 11211 -u root
 * 			停止:kill cat /tmp/memcached.pid
 * 					killall memcached
 * windows:
 * 		使用编译完成的软件
 * 		1.安装到系统服务中:
 * 			在doc中:执行此软件 memcached.exe -d install(如果提示错误,要找到cmd.exe用管理员身份打开) 
 *		2.卸载:
 * 			在doc中:执行此软件 memcached.exe -d uninstall 
 * 		3.启动服务:(默认ip是本机,端口是11211)
 * 			memcached.exe -d start 
 * 			memcached.exe -d -m 128 -l 127.0.0.1 -p 11211 start 指定参数
 * 配置参数:
 * 	-p 监听端口
 * 	-l 链接的ip地址,默认是本机
 * 	-d start 启动memcached服务
 *  -d restart 重启memcached服务
 *  -d stop|shutdown 关闭正在运行的memcached服务
 *  -d install 安装memcached服务
 *  -d uninstall 卸载memcached服务
 *  -u 以什么身份运行(仅在以root运行的时候有效)
 *  -m 最大使用内存,单位是MB,默认是64MB,最大应该是2G
 *  -M 内存耗尽时返回错误,而不是删除项
 *  -c 最大同时连接数,默认是1024
 *  -f 块大小增长因子,默认是1.25
 *  -n 最小分配空间,key+value+float 默认是48
 *  -h 显示帮助
 * 
 * 操作memcached(命令方式telnet作为客户端)
 * 	telnet localhost 11211 ---memcached
 * 	
 * php配置memcached文件:在ext中加入:php_memcache.dll(对于的版本要正确)
 * 并修改php.ini扩展
 * extension=php_memcache.dll
 * [Memcache]
 * memcache.allow_failover = 1
 * memcache.max_failover_attempts=20
 * memcache.chunk_size =8192
 * memcache.default_port = 11211 
 * 
 * Memcache面向对象的常用接口包括:
 * Memcache::connect 	打开一个到memcache的链接
 * Memcache::pconnect	打开一个到memcache的长连接
 * Memcache::close		关闭一个Memcache的链接
 * Memcache::set		保存数据到memcache的服务器
 * Memcache::add		添加数据到memcache的服务器
 * Memcache::get		提取一个已保存在memcache的服务器数据
 * Memcache::replace	替换一个已经存在memcache服务器上的项目(功能类似memcache::set)
 * Memcache::delete		从Memcache服务器上删除一个保存的项目
 * Memcache::flush		刷新所以Memcache服务器上保存的项目(类似于删除所有)
 * Memcache::getStats	获取当前memcache服务器运行的状态
 * Memcache::addServer	分布式服务器添加一个服务器	
 * 
 * 
 * 何时何处使用memcache
 * 		一、数据库读出来的数据(select)使用memcache处理
 * 		二、在会话控制session中使用
 * 
 * memcache的安全建议:
 * 		1.内网访问:
 * 			memcached -d -u root -l 192.168.0.111 -p 11211 
 * 		2.设置防火墙:
 * 			iptables -A INPUT -p tcp -s 192.168.1.111 -dport 11211 -j ACCEPT
 * 			iptables -A INPUT -p udp -s 192.168.1.111 -dport 11211 -j ACCEPT
 * 
 */

//调用memcache的测试的方法
//memcacheTest();
//调用存储查询语句的方法
memcacheSQL();

/**
 * 查询数据库
 * 缓存查询的数据放入memcache中
 * 注意:
 * 		1.同一个项目的安装两次,key要有不同的前缀
 * 		2.sql语句可以作为缓存的下标(防止sql暴漏?)
 */
function memcacheSQL(){
	//链接数据库存储select查询语句
	//创建Memcache服务对象
	$mem = new Memcache;
	$mem->connect("localhost",11211);
	$sql = "select * from users where id <12";
	$key = md5($sql);
	$data = $mem->get($key);
	if (!$data) {
		$mysql = new mysqli("localhost","root","root","hibernate");
		$result = $mysql->query($sql);
		$data = array();
		while ($row = $result->fetch_assoc()){
			$data[]=$row;
		}
		$result->free();
		$mysql->close();
		
		$mem->set($key,$data,MEMCACHE_COMPRESSED,60);
		echo $sql;
	}
	
	echo "<pre>";
	print_r($data);
	echo "</pre>";
	
	$mem->close();
}
	

/**
 * memcache服务器
 * 数据测试
 */
function memcacheTest(){
	//创建Memcache服务对象
	$mem = new Memcache;
	$mem->connect("localhost",11211);
	//添加多服务器
	//$mem->addServer("www.sid.com",11221);
	//$mem->addServer("192.167.1.112",11211);
	
	//添加
	$mem->add("mystr","this is a memcache test!",MEMCACHE_COMPRESSED,60);
	//修改
	$mem->set("mystr","this is a update memcache test!",MEMCACHE_COMPRESSED,60);
	//获取
	$str = $mem->get("mystr");
	echo $str."<br>";
	
	//添加数组
	$mem->add("myarr",array("asdfsa","sdfsdf"),MEMCACHE_COMPRESSED,60);
	//获取
	$str = $mem->get("myarr");
	echo $str."<br>";
	
	//添加对象
	class Per{
		var $name = "san";
		var $age=12;
	}
	$mem->add("myper",new Per,MEMCACHE_COMPRESSED,60);
	//获取
	$str = $mem->get("myper");
	echo $str->name."<br>";
	
	//获取服务器的相关信息
	echo $mem->getVersion()."<br>";
	echo "<pre>";
	echo var_dump($mem->getStats());
	echo "</pre>";
	
	$mem->flush();
	$mem->close();
}
?>

附php的memcached扩展库下载(php5.2和php5.3)

点击打开链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值